Php 保护JSONP?

Php 保护JSONP?,php,jquery,cross-domain,jsonp,Php,Jquery,Cross Domain,Jsonp,我有一个使用JSONP进行跨域ajax调用的脚本。这很好,但我的问题是,有没有办法阻止其他网站访问这些URL并从中获取数据?我基本上想做一个允许的网站列表,并且只返回列表中的数据。我正在使用PHP,我想我可能会使用“HTTP_REFERER”,但我已经读到一些浏览器不会发送此信息???有什么想法吗 谢谢 确实没有有效的解决办法。如果您的JSON可以通过浏览器访问,那么其他站点也同样可以访问它。对于web服务器来说,来自浏览器或其他服务器的请求除了标题之外几乎无法区分。与ILMV注释一样,引用者(

我有一个使用JSONP进行跨域ajax调用的脚本。这很好,但我的问题是,有没有办法阻止其他网站访问这些URL并从中获取数据?我基本上想做一个允许的网站列表,并且只返回列表中的数据。我正在使用PHP,我想我可能会使用“HTTP_REFERER”,但我已经读到一些浏览器不会发送此信息???有什么想法吗


谢谢

确实没有有效的解决办法。如果您的JSON可以通过浏览器访问,那么其他站点也同样可以访问它。对于web服务器来说,来自浏览器或其他服务器的请求除了标题之外几乎无法区分。与ILMV注释一样,引用者(和其他标题)可以被伪造。毕竟,他们是自我报告的

安全从来都不是完美的。一个有足够决心的人可以克服现有的任何安全措施,但安全的目标是产生足够高的威慑力,劝阻非专业人士和/或大多数人投入必要的时间和资源来破坏安全

考虑到这一点,您可以创建一个足够高的进入壁垒,以便其他网站在设置进入壁垒的情况下可能不会麻烦提出请求。您可以生成获取json数据所需的一次性令牌。一旦使用令牌获取json数据,该令牌随后将失效。为了检索令牌,必须使用javascript中嵌入在页面中的令牌请求web页面,然后将该令牌放入json数据的ajax调用中。再加上过期标记和javascript中足够的模糊处理,您已经创建了足够高的屏障


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

您是否有权访问要授予JSONP访问权限的服务器/站点

虽然不理想,但您可以做的是在允许查看JSONP的页面加载上向IP的db添加一条记录,然后在JSONP加载上检查该记录是否存在。如果合适的话,记录上可能有一个到期日

e、 g

-用户加载页面,将其IP添加到允许用户的数据库中

-如上所述,添加到数据库

  • 加载JSONP,检查数据库中是否存在IP
  • 一小时后,从数据库中删除记录,因此需要另一个页面加载

尽管如果scraper(或其他站点)能够找到允许用户查看JSONP的方法,这一点很容易解决,但他们只需先点击页面即可。

我相信您可以通过htaccess实现这一点-

确保你的标题发送“HTTP\u REFERER”-我不知道任何浏览器如果你告诉它,它不会发送。(如果您仍然担心,请优雅地后退)

然后使用htaccess允许/拒绝来自正确引用者的访问

# deny all except those indicated here
order deny,allow
deny from all
allow from .*domain\.com.*

使用包含每个jsonp请求使用的令牌的cookie如何?
根据设置,如果不想使用Cookie,也可以使用变量。

使用importScript表单Web Worker与jsonp完全相同。 像莱克斯潘所说的那样再做一次检查。向web worker发送主脚本,向web worker发送服务器并返回安全查询。如果网络工作者回答主脚本时没有被询问或使用错误的令牌,那么最好将您的网站转发到涅盘。如果使用错误的令牌询问服务器,请不要回答。Cookie不会随importScript请求一起发送,因为文档在web工作人员级别不可用。始终通过post请求发送安全相关cookie


但是仍然有很多风险。中间的人知道如何。

也>代码>引用者< /代码>可以被欺骗。