V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
liangmishi
V2EX  ›  Python

网站如果挂到 cdn,不就不能获取到来访用户的真是 ip 了吗

  •  
  •   liangmishi · 2016-05-09 14:42:42 +08:00 · 6617 次点击
    这是一个创建于 3122 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网站挂上 cdn ,感觉还挺快的,但是问题来了,服务器上获取到的 ip 都是 cdn 的代理 ip ,那这样的话不就不能准确的判断访问者的 ip 了吗

    第 1 条附言  ·  2016-05-09 19:47:39 +08:00
    header 中的 X-forwarded-for 记录的是真是 ip 。
    20 条回复    2016-05-10 14:15:13 +08:00
    Havee
        1
    Havee  
       2016-05-09 15:17:57 +08:00   ❤️ 1
    set_real_ip_from cdn_ip;
    ryd994
        2
    ryd994  
       2016-05-09 16:31:29 +08:00 via Android   ❤️ 1
    会添加 X-forwarded-for 或者 client-IP
    注意验证来源 IP ,只有来自 CDN IP 地址段的才信任这些 header
    liangmishi
        3
    liangmishi  
    OP
       2016-05-09 17:34:05 +08:00
    @ryd994 嗯嗯,确实如此,在 header 里可以找到 X-forwarded-for ,这就是真实 ip 。 不过为什么还要验证是否来自 CDN 呢。既然是挂了 CDN ,那所有访问都应该是从 CDN 代理服务器那边过来的。除非是知道 ip ,直接通过 ip 访问
    liangmishi
        4
    liangmishi  
    OP
       2016-05-09 17:38:21 +08:00
    @Havee 在 nginx 里配置是吗!我去试试
    kn007
        5
    kn007  
       2016-05-09 17:40:56 +08:00
    让 CDN 传输过来指定头部,后端只信任指定的头部
    bossfrog
        6
    bossfrog  
       2016-05-09 18:30:00 +08:00 via Android
    所以每个请求都回源好了(滑稽脸)
    bossfrog
        7
    bossfrog  
       2016-05-09 18:42:24 +08:00 via Android
    小明被恶霸殴打,雇了保镖来招架,爽是爽了,但是不知道有谁想殴打他了,大失所望!
    iyaozhen
        8
    iyaozhen  
       2016-05-09 19:12:39 +08:00
    CDN 应该支持向后传客户端 IP 吧
    liangmishi
        9
    liangmishi  
    OP
       2016-05-09 19:30:37 +08:00
    @kn007 cnd 有传一个 X-forwarded-for 头
    liangmishi
        10
    liangmishi  
    OP
       2016-05-09 19:33:45 +08:00
    @bossfrog 要么被打 要么失望...
    liangmishi
        11
    liangmishi  
    OP
       2016-05-09 19:33:59 +08:00
    @iyaozhen 支持的, X-forwarded-for
    lhbc
        12
    lhbc  
       2016-05-09 19:58:53 +08:00 via Android
    注意 X-forwarded-for 可能有多个 IP ,如果浏览器使用了代理
    liangmishi
        13
    liangmishi  
    OP
       2016-05-09 20:00:48 +08:00
    @lhbc 取最后一个
    xuhaoyangx
        14
    xuhaoyangx  
       2016-05-09 20:07:39 +08:00
    @liangmishi X-forwarded-for 最后一个不一定对,有些网络会把内网的 ip 带上
    liangmishi
        15
    liangmishi  
    OP
       2016-05-09 22:51:52 +08:00
    @xuhaoyangx 这个...那怎么办
    shiji
        16
    shiji  
       2016-05-09 22:56:46 +08:00
    具体取决的 CDN 。
    我记得 Incapsula 我试过,会直接把 X-forwarded-for 改成发送数据包的客户 IP ,客户端是没法伪造的,伪造的会被直接覆盖掉。所以也不会存在多个 X-forwarded-for 的情况
    qgy18
        17
    qgy18  
       2016-05-09 23:25:52 +08:00 via iPhone   ❤️ 1
    liangmishi
        18
    liangmishi  
    OP
       2016-05-09 23:53:11 +08:00
    @shiji 我试了下 伪造了个 X-forwarded-for 然后在服务器端 获取 X-forwarded-for 里面有真实的 ip 也有伪造的
    liangmishi
        19
    liangmishi  
    OP
       2016-05-09 23:53:25 +08:00
    @qgy18 受益匪浅
    pine
        20
    pine  
       2016-05-10 14:15:13 +08:00
    统计代码不走 cdn 不就行了,多简单的事。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 06:45 · PVG 14:45 · LAX 22:45 · JFK 01:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.