我需要清理JSONP调用中的回调参数吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我想通过JSONP提供一个webservice,并想知道是否需要清理回调参数的值。

我当前的服务器端脚本目前看起来是这样的(或多或少):

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

这是一个典型的XSS漏洞。

提问于
用户回答回答于

callback

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

当您从php回显时:

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

用户回答回答于

是我使用的测试:

function valid_js_identifier( $callback ){
    return !preg_match( '/[^0-9a-zA-Z\$_]|^(abstract|boolean|break|byte|case|catch|char|class|const|continue|debugger|default|delete|do|double|else|enum|export|extends|false|final|finally|float|for|function|goto|if|implements|import|in|instanceof|int|interface|long|native|new|null|package|private|protected|public|return|short|static|super|switch|synchronized|this|throw|throws|transient|true|try|typeof|var|volatile|void|while|with|NaN|Infinity|undefined)$/', $callback);
}

扫码关注云+社区