如,http://www.xx.com/a.php 包含一个了 b.js,b.js 里面有 ajax 请求:
$.ajax({ url : "http://www.yy.com/c.php?", dataType : "jsonp", ......
在在 yy.com 域名下的 c.php 中如何判断来源是 www.xx.com ?
![]() | 1 lsido 2018-04-22 13:04:08 +08:00 via iPhone 获取 referer |
2 huaxing0211 OP @lsido 地址栏直接输入的话应该是空的,这里用 referer,发现也是空…… |
3 KKKKKK 2018-04-22 13:32:31 +08:00 via iPhone Cors 了解一下 |
![]() | 4 qinrui 2018-04-22 13:37:23 +08:00 via iPhone 跨域能 ajax 么? |
5 huaxing0211 OP @qinrui jsonp |
6 xiaome 2018-04-22 14:50:11 +08:00 判断来源地址,好像没办法保证绝对准确;都是可以伪造的内容。 如果你是想防止别人改内容请用 CSRF,如果是想防止别人请求你的接口使用一个可靠 token 即可 |
![]() | 7 580a388da131 2018-04-22 14:51:06 +08:00 页面跳转才有 HTTP_REFERER,直接打开、Javascript、Refresh、Header 没有 HTTP_REFERER。 |
![]() | 8 580a388da131 2018-04-22 14:52:50 +08:00 HTTP_REFERER 做个防盗链就好,不要做安全检查,可以随便改的。 给接口加个验证。 |
9 leven87 2018-04-22 15:00:15 +08:00 可以在浏览器里面看下 ajax 请求中 eferer 字段的值。如果没有采用其他方法判断。 |
10 leven87 2018-04-22 15:00:31 +08:00 referer |
![]() | 11 wsly47 2018-04-22 15:32:47 +08:00 via iPhone $_SERVER['HTTP_REFERER'] |
![]() | 12 lsido 2018-04-22 16:33:04 +08:00 ![]() |
13 wwwicbd 2018-04-22 22:00:11 +08:00 如果是 CSRF 防护的话, 推荐使用身份验证 token,在 server 检查 token 的合法性。 rails 做的就很好,默认都支持好了,可以参考 https://ruby-china.org/topics/35199 |
![]() | 14 checgg 2018-04-22 22:50:32 +08:00 ![]() 从 http header 里面哪 refer 去判断就行. 不过,为什么要判断呢? 客户端所有的参数都是可以伪造的,是不可信的. 判断的意义不大,自己骗自己而已. CSRF 一般是用 token 去解决,详情请搜索 JWT. |
15 huaxing0211 OP @lsido 感谢,完全是这个意思,已解决! |