保护JSONP?

mik*_*ike 9 php jquery jsonp cross-domain

我有一个脚本,使用JSONP进行跨域ajax调用.这很好但我的问题是,有没有办法防止其他网站访问这些网址并从中获取数据?我基本上想要列出允许的站点列表,如果它们在列表中,则只返回数据.我正在使用PHP和图我可能能够使用"HTTP_REFERER",但已经读过一些浏览器不会发送此信息.... ??? 有任何想法吗?

谢谢!

the*_*oon 6

确实没有有效的解决方案.如果您的JSON可以通过浏览器访问,那么其他站点也可以同样访问它.除了标题之外,对于Web服务器来说,源自浏览器或其他服务器的请求实际上是无法区分的.与ILMV评论一样,引用者(和其他标题)可能被伪造.他们毕竟是自我报道的.

安全永远不会完美.一个有足够决心的人可以克服现有的任何安全措施,但安全的目标是创造足够高的威慑力,使大多数人和/或大多数人不会浪费时间和资源来破坏安全.

考虑到这一点,您可以创建一个足够高的入口门槛,以便其他站点可能不会因为进入障碍而提出请求.您可以生成获取json数据所需的单一用途令牌.一旦使用令牌来获取json数据,则该令牌随后被无效.为了检索令牌,必须使用javascript中嵌入在页面中的令牌来请求网页,然后将其放入json数据的ajax调用中.将此与时间到期令牌相结合,并在javascript中进行充分的混淆,并且您已经创建了足够高的障碍.

请记住,这不是不可能规避的.另一个网站可以从javascript中提取令牌,或拦截ajax调用并在多个点劫持数据.