我需要从JSONP调用中清除回调参数吗?

前端之家收集整理的这篇文章主要介绍了我需要从JSONP调用中清除回调参数吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过JSONP提供一个webservice,并且想知道如果我需要从回调参数中清除值。

我目前的服务器端脚本目前看起来像这样(或多或少,代码PHP中,但可以是任何事情。):

header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';

这是一个经典的XSS漏洞。

如果我需要清理它,那怎么办?我无法找到关于什么可以允许回调字符串的足够的信息。我从Wikipedia引用:

While the padding (prefix) is typically the name of a callback function that is defined within the execution context of the browser,it may also be a variable assignment,an if statement,or any other Javascript statement prefix.

是的,当回调是这样的
(function xss(x){evil()})

当您从PHP回显时,将会看起来像

(function xss(x){evil()})(json)

函数xss将运行,而evil()可以是将Cookie发送到其他地方的一些代码

因此,将其清理为仅有效的函数名称,例如,将其限制为字母数字

原文链接:https://www.f2er.com/json/288555.html

猜你在找的Json相关文章