今天早上我发现我的网站可能存在漏洞;我完全不确定我的网站是否可以被它损坏但是很好......
在我的网站上,我使用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>
出现警告信息,我能做什么?这有危险吗?我怎么解决它?
谢谢大家。
答案 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']);