JavaScript网站漏洞

时间:2015-08-30 15:06:08

标签: javascript php html

今天早上我发现我的网站可能存在漏洞;我完全不确定我的网站是否可以被它损坏但是很好......

在我的网站上,我使用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.com/index.php?page=</script><script>alert(1)</script>

出现警告信息,我能做什么?这有危险吗?我怎么解决它?

谢谢大家。

2 个答案:

答案 0 :(得分:2)

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

您可以使用htmlspecialchars:

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

http://www.w3schools.com/php/func_string_htmlspecialchars.asp

答案 1 :(得分:1)

是的,这很危险,因为有恶意的人现在可以在您的域上形成执行客户端代码的URL。这可以是显示简单的警报框到劫持cookie。这称为cross-site scripting

忽略您当前的设置是否合适,您可以在输出前sanitizing $_GET['page']变量修复漏洞:

htmlspecialchars($_GET['page']);