我想通过JSONP提供一个web服务,并且想知道,如果我需要清理callback参数中的值.
我当前的服务器端脚本现在看起来像这样(或多或少.代码在PHP中,但可能是真的.):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
Run Code Online (Sandbox Code Playgroud)
这是一个典型的XSS漏洞.
如果我需要消毒它,那怎么样?我无法找到有关可能允许的回调字符串的足够信息.我引用维基百科:
虽然填充(前缀)通常是在浏览器的执行上下文中定义的回调函数的名称,但它也可以是变量赋值,if语句或任何其他Javascript语句前缀.