【发布时间】:2011-02-16 03:33:35
【问题描述】:
我想通过 JSONP 提供网络服务,并且想知道是否需要清理回调参数中的值。
我当前的服务器端脚本目前看起来像这样(或多或少。代码在 PHP 中,但实际上可以是任何东西。):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
这是一个经典的 XSS 漏洞。
如果我需要对其进行消毒,那该怎么做?我无法找到有关可能允许的回调字符串的足够信息。我引用Wikipedia:
虽然填充(前缀)通常是在浏览器的执行上下文中定义的回调函数的名称,但它也可以是变量赋值、if 语句或任何其他 Javascript 语句前缀。
【问题讨论】: