PHP 如何判断 ajax 发起请求的来源地址?

2018-04-22 12:50:15 +08:00
 huaxing0211

如,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

5125 次点击
所在节点    程序员
15 条回复
lsido
2018-04-22 13:04:08 +08:00
获取 referer
huaxing0211
2018-04-22 13:14:42 +08:00
@lsido 地址栏直接输入的话应该是空的,这里用 referer,发现也是空……
KKKKKK
2018-04-22 13:32:31 +08:00
Cors 了解一下
qinrui
2018-04-22 13:37:23 +08:00
跨域能 ajax 么?
huaxing0211
2018-04-22 13:41:15 +08:00
@qinrui jsonp
xiaome
2018-04-22 14:50:11 +08:00
判断来源地址,好像没办法保证绝对准确;都是可以伪造的内容。
如果你是想防止别人改内容请用 CSRF,如果是想防止别人请求你的接口使用一个可靠 token 即可
580a388da131
2018-04-22 14:51:06 +08:00
页面跳转才有 HTTP_REFERER,直接打开、Javascript、Refresh、Header 没有 HTTP_REFERER。
580a388da131
2018-04-22 14:52:50 +08:00
HTTP_REFERER 做个防盗链就好,不要做安全检查,可以随便改的。
给接口加个验证。
leven87
2018-04-22 15:00:15 +08:00
可以在浏览器里面看下 ajax 请求中 eferer 字段的值。如果没有采用其他方法判断。
leven87
2018-04-22 15:00:31 +08:00
referer
wsly47
2018-04-22 15:32:47 +08:00
$_SERVER['HTTP_REFERER']
lsido
2018-04-22 16:33:04 +08:00
@huaxing0211 是这个意思吗?





wwwicbd
2018-04-22 22:00:11 +08:00
如果是 CSRF 防护的话, 推荐使用身份验证 token,在 server 检查 token 的合法性。
rails 做的就很好,默认都支持好了,可以参考 https://ruby-china.org/topics/35199
checgg
2018-04-22 22:50:32 +08:00
从 http header 里面哪 refer 去判断就行.
不过,为什么要判断呢?
客户端所有的参数都是可以伪造的,是不可信的.
判断的意义不大,自己骗自己而已.
CSRF 一般是用 token 去解决,详情请搜索 JWT.
huaxing0211
2018-04-23 21:04:17 +08:00
@lsido 感谢,完全是这个意思,已解决!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448864

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX