加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:47:52 所属栏目:百科 来源:网络整理
导读:我想通过JSONP提供一个webservice,并且想知道如果我需要从回调参数中清除值。 我目前的服务器端脚本目前看起来像这样(或多或少,代码在PHP中,但可以是任何事情。): header("Content-type: application/json; charset=utf-8");echo $_GET['callback'] . '(
我想通过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发送到其他地方的一些代码。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读