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

Is there any security issue if server do not filter JSONP's callback parameter?

本文关键字:是否 存在 安全 问题 参数 回调 服务器 过滤 jsonp 如果      更新时间:2023-09-26

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

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

和服务器从不做任何安全检查回调的值,在这种情况下是'fun'。它会原样输出回调的值,输入什么,输出什么。即:

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

将输出如下内容:

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

通常情况下,这个parma不会被存储在数据库中。

问题是:这个JSONP api有任何安全问题吗?

如果有,它怎么能被黑客利用呢?

XSS还是CSRF?

谁能给我展示一个用例吗?

JSONP的安全问题总是在客户端(除非您允许这样的请求在服务器上存储任何内容,而您不应该这样做)—您在页面上执行或多或少受信任的外部脚本。

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