如,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 1
|
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 1
从 http header 里面哪 refer 去判断就行.
不过,为什么要判断呢? 客户端所有的参数都是可以伪造的,是不可信的. 判断的意义不大,自己骗自己而已. CSRF 一般是用 token 去解决,详情请搜索 JWT. |
15
huaxing0211 OP @lsido 感谢,完全是这个意思,已解决!
|