首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  程序员

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

  •  
  •   huaxing0211 · 334 天前 · 2656 次点击
    这是一个创建于 334 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    15 回复  |  直到 2018-04-23 21:04:17 +08:00
        1
    lsido   334 天前 via iPhone
    获取 referer
        2
    huaxing0211   334 天前
    @lsido 地址栏直接输入的话应该是空的,这里用 referer,发现也是空……
        3
    KKKKKK   334 天前 via iPhone
    Cors 了解一下
        4
    qinrui   334 天前 via iPhone
    跨域能 ajax 么?
        5
    huaxing0211   334 天前
    @qinrui jsonp
        6
    xiaome   334 天前
    判断来源地址,好像没办法保证绝对准确;都是可以伪造的内容。
    如果你是想防止别人改内容请用 CSRF,如果是想防止别人请求你的接口使用一个可靠 token 即可
        7
    580a388da131   334 天前
    页面跳转才有 HTTP_REFERER,直接打开、Javascript、Refresh、Header 没有 HTTP_REFERER。
        8
    580a388da131   334 天前
    HTTP_REFERER 做个防盗链就好,不要做安全检查,可以随便改的。
    给接口加个验证。
        9
    leven87   334 天前
    可以在浏览器里面看下 ajax 请求中 eferer 字段的值。如果没有采用其他方法判断。
        10
    leven87   334 天前
    referer
        11
    wsly47   334 天前 via iPhone
    $_SERVER['HTTP_REFERER']
        12
    lsido   334 天前   ♥ 1
    @huaxing0211 是这个意思吗?





        13
    wwwicbd   334 天前
    如果是 CSRF 防护的话, 推荐使用身份验证 token,在 server 检查 token 的合法性。
    rails 做的就很好,默认都支持好了,可以参考 https://ruby-china.org/topics/35199
        14
    checgg   334 天前   ♥ 1
    从 http header 里面哪 refer 去判断就行.
    不过,为什么要判断呢?
    客户端所有的参数都是可以伪造的,是不可信的.
    判断的意义不大,自己骗自己而已.
    CSRF 一般是用 token 去解决,详情请搜索 JWT.
        15
    huaxing0211   333 天前
    @lsido 感谢,完全是这个意思,已解决!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1684 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 16:36 · PVG 00:36 · LAX 09:36 · JFK 12:36
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1