我试图找出是否有防止CSRF嵌入式客户的网站一个JavaScript控件的好方法。如何可靠地保护公共JSONP请求?
这个小部件将使最终用户能够通过JSONP向我们客户的账户发送一个请求给我们(非公共)API的PHP服务器。
到目前为止,我还没有想出一个绝对的方法来确保所有请求都来自我们客户的网站。有些想法我有:在服务器端生成并与每个后续JSONP请求一起(不知道如何验证,虽然初始请求,因为第一个令牌将在JS和任何人是可读的回传
- 令牌可要求“下一个”令牌)
- 检查Referer标头(不可靠的,是可以被欺骗或者根本就没有通过浏览器传递)
- 使用SSL(当然会帮助,但没有解决CSRF的问题)
这是在所有可能的?我已经遇到Fotomoto's widget这似乎让同一类型的,我们正在寻找的功能,但我不知道他们是如何做的。