清理 jsonp 回调的最佳方法是什么?
我目前有类似的东西:
function api_output($data) {
if (isset($_GET['callback'])) {
$cb = preg_replace("/[^][.\\'\\\"_A-Za-z0-9]/", '', $_GET['callback']);
send_js_headers();
print sprintf('%s(%s);', $cb, json_encode($data));
exit(0);
}
send_json_headers();
echo json_encode($data);
exit(0);
}
为什么? :
Do I need to sanitize the callback parameter from a JSONP call?
最佳答案
回调必须是有效的 JavaScript 标识符,并且您的服务器端代码应验证这一点。 Javascript 标识符只能包含字母、数字、下划线和 $ 符号。
只要回调名称是有效的 JS 标识符,就不需要对其进行编码/转义。如果回调不是有效的标识符,您应该简单地返回 400 错误代码。
您不得替换回调名称中的字符。这样做没有任何意义,因为客户端代码将不再定义回调函数。
关于php - 清理 jsonp 回调的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166476/