如果服务器不过滤JSONP的回调参数,是否存在任何安全问题?

时间:2014-06-08 11:56:47

标签: javascript jquery ajax jsonp

假设我有一个使用这样的JSONP api(这是托管在我的服务器上):

http://www.example.com/jsonp.php?callback=fun

并且服务器永远不会对回调的值进行任何安全检查,在这种情况下,这些值很有趣#39; 它会按原样输出回调值,输入什么,输出什么。 那就是:

http://www.example.com/jsonp.php?callback=alert();fun

将输出如下内容:

alert();fun({/*data goes here*/});

在一般情况下,此parma不会存储在数据库中。

问题是:这个JSONP API有什么安全问题吗?

如果有,黑客如何使用它?

XSS还是CSRF?

有人可以在这里向我展示一个用例吗?

1 个答案:

答案 0 :(得分:2)

JSONP的安全问题始终在客户端(除非您允许此类请求在您的服务器上存储任何内容,您不应该这样做) - 您正在执行更多 - 或在您的页面上没有受信任的外国脚本。

它基本上和eval一样不安全。但是如果攻击者可以使用其中任何一个,那么其他东西是错误的(本身不是eval或JSONP)。