【发布时间】:2016-01-11 02:52:14
【问题描述】:
本网站的用户使用一种工具来构建具有自定义设置的 JavaScript 对象。
每次他们更改输入元素中的某些内容时,我都想用他们自己的设置执行这段 javascript 代码并显示预览。
所以我放了一个 iframe,用 url 中的设置发送请求。
<iframe src="settings.php?javascript=...></iframe>
每次他们更改某些内容时,都会重新加载 iframe。
我的 PHP 代码?
<?php
$javascript = "";
/**/
if(empty($_GET["javascript"]))
{
exit;
}
/**/
$javascript = "
<script>
".$_GET["javascript"]."
</script>
";
/**/
$html = '
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
'.$javascript.'
</head>
<body></body>
</html>
';
/**/
echo($html);
此代码是否容易受到 XSS 攻击?如果是,我该如何防止这种情况发生?
【问题讨论】:
-
如果您让人们插入他们想要的任何 javascript,他们可以放置漏洞并分享链接。你怎么能防止这种情况发生?不要让人们在您的网站上运行自己的 javascript。
-
很简单:
settings.php?javascript=alert%28%22I+am+vulnerable%22%29%3B所以是的,很脆弱。 -
只是说:他们可以很容易地比 javascript 放更多东西。另外,是的,永远不要让人们在其他机器上运行 JS。 settings.php?javascript=
哈哈,我可以写任何东西,甚至可以在不需要知道 iframe 的内部结构的情况下询问用户密码和其他东西
-
Keh,您可以确保它的安全,但要做到这一点非常很难做到这一点,而不仅仅是阻止其他人在您的网页上运行他们的 javascript 代码。您可以将其沙箱化。或者实施 CSP...
-
如果我只传递 JSON 对象,它需要一些过滤器吗?
标签: javascript php xss