我的 PHP 代码容易受到 XSS 攻击吗?
Is my PHP code vulnerable to XSS?
本网站的用户使用一种工具来构建具有自定义设置的 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 攻击?如果是,我该如何预防?
是的,您的代码容易受到 XSS 攻击。事实上,让用户 运行 任意 javascript 几乎就是 XSS 漏洞的定义。它是有意而不是意外的事实并不能降低它的脆弱性。
如果你想要的只是一个设置对象,当你可以只使用 JSON 时,没有理由允许任意 javascript 。 JSON.parse会在javascript中将一个JSON字符串解析成一个JS对象(而JSON.stringify会将一个对象序列化为一个字符串)。使用 JSON 方法将进行额外的验证,以确保对象是有效的 JSON object/string 而不是直接将其放入脚本标记(或使用 eval),防止(至少这一个XSS 的地点。
本网站的用户使用一种工具来构建具有自定义设置的 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 攻击?如果是,我该如何预防?
是的,您的代码容易受到 XSS 攻击。事实上,让用户 运行 任意 javascript 几乎就是 XSS 漏洞的定义。它是有意而不是意外的事实并不能降低它的脆弱性。
如果你想要的只是一个设置对象,当你可以只使用 JSON 时,没有理由允许任意 javascript 。 JSON.parse会在javascript中将一个JSON字符串解析成一个JS对象(而JSON.stringify会将一个对象序列化为一个字符串)。使用 JSON 方法将进行额外的验证,以确保对象是有效的 JSON object/string 而不是直接将其放入脚本标记(或使用 eval),防止(至少这一个XSS 的地点。