该网站中的用户使用的工具可通过自定义设置构建JavaScript对象。

每次他们在输入元素中更改某些内容时,我都想使用自己的设置执行此javascript代码并显示预览。

因此,我放置了一个iframe,该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将JSON字符串解析为JS对象(而JSON.stringify会将对象序列化为字符串)在javascript中。使用JSON方法将进行额外的验证,以确保该对象是有效的JSON对象/字符串,而不是直接将其放在脚本标签中(或使用eval),从而防止了XSS(至少在此位置)。

关于javascript - 我的PHP代码容易受到XSS攻击吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34708197/

10-11 23:31
查看更多