JavaScript网站漏洞

JavaScript website vulnerability

本文关键字:漏洞 网站 JavaScript      更新时间:2023-09-26

今天早上我注意到我的网站上可能存在漏洞;我不确定我的网站是否会被它损坏,但是……

在我的网站上,我使用JavaScript代码来打开(显示)主页内的不同部分(其他页面);

在主index.php中,我在显示其他页面的地方放置了以下代码:

标题:

<?php
$section = "default";
if (isset($_GET["page"]))
{
  $section = $_GET["page"];
}
?>

正文:

<script type="text/javascript">
    openPage('<?php echo($page); ?>');
</script>

JavaScript函数是这样的:

function openPage(page, form)
{
var data = "page=" + page;
if (form != null)
    data += "&" + $("#" + form).serialize();
$("#content").html("<center>Wait..</center>");
$.ajax({
    type: "POST",
    url: "content.php",
    data: data,
    success: function(result) {
        $("#content").html(result);
    }
})
}

content.php

<?
  if (file_exists("pages/".$page.".php"))
    include("pages/".$page.".php");
  else
  {
    include("pages/default.php");
  }
?>

我的问题是,如果我在url中写:

url.com/index.php?page=</script><script>alert(1)</script>

提示信息出现,我该怎么办?这有危险吗?我怎样才能修好它?

这不是JS漏洞,这是你的代码漏洞。

你可以使用htmlspecialchars:

<?php
$section = "default";
if (isset($_GET["page"]))
{
  $section = htmlspecialchars($_GET["page"]);
}
?>
http://www.w3schools.com/php/func_string_htmlspecialchars.asp

是的,这很危险,因为恶意的人现在可以在您的域上形成执行客户端代码的url。这可以从显示一个简单的警告框到劫持cookie。这被称为跨站点脚本。

忽略当前设置是否良好,您可以通过在输出$_GET['page']变量之前对其进行消毒来修复漏洞:

htmlspecialchars($_GET['page']);