我的PHP代码是否容易受到XSS的攻击?

时间:2016-01-10 16:57:09

标签: javascript php 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攻击?如果是的话,我该如何防止这种情况?

1 个答案:

答案 0 :(得分:2)

是的,您的代码容易受到XSS的攻击。实际上,让用户运行任意javascript几乎就是XSS漏洞的定义。它有意而不是偶然的事实并不会使它不那么脆弱。

如果您想要的只是一个设置对象,那么当您只使用JSON时,没有理由允许任意javascript。 JSON.parse将在Javascript中将JSON字符串解析为JS对象(并且JSON.stringify将对象序列化为字符串)。使用JSON方法将进行额外的验证,以确保该对象是一个有效的JSON对象/字符串,而不是直接将其放入脚本标记(或使用eval),从而阻止(至少这一个场所)XSS。