zoukankan      html  css  js  c++  java
  • F5 Http profile 的 insert x-forward-for

    场景:当使用F5进行http proxy时,我们希望node服务器能正确获取来源IP地址。

    试验:

    • 使用开启了insert x-forward-for选项的http profile。
    • 客户端地址:192.168.200.1,F5 VIP: 192.168.200.70 , F5 internel IP: 172.30.16.12,node IP: 172.30.10.100
    • 从客户端发送一个http request。发现发送到后台node的http header的最后一行会包括一个X-Forwarded-For :192.168.200.1的头信息。

    使用Java servlet API - request.getHeader("X-Forwarded-For")获得的值为:192.168.200.1

    (如果在后台服务器中间架个squid,则squid默认会开启X-Forwarded-For,此时squid会在该值后面附加一个, 172.30.16.12。此时使用Java servlet API - request.getHeader("X-Forwarded-For")获得的值为:192.168.200.1, 172.30.16.12)

    • 在客户端使用jmeter发送一个包含X-Forwarded-For:221.221.221.3的request。用tcpdump发现发送到node的header中有2个Forward头,即X-Forwarded-For:221.221.221.3和X-Forwarded-For :192.168.200.1。

    使用Java servlet API - request.getHeader("X-Forwarded-For")获得的值为:221.221.221.3。

    (如果在后台服务器中间架个squid,则squid默认会开启X-Forwarded-For,此时squid会把2个forward头变成1个,并且在该值后面附加一个, 172.30.16.12。此时使用Java servlet API - request.getHeader("X-Forwarded-For")获得的值为:221.221.221.3, 192.168.200.1, 172.30.16.12)

      • 这说明forward头时可以伪造的,如果不信任客户端发送到F5的X-Forwarded-For头,则可以使用F5的irule删除客户端的XFF,如下所示:

        when HTTP_REQUEST {
        HTTP::header remove X-Forwarded-For
        HTTP::header insert X-Forwarded-For [IP::client_addr]
        }

      • 或者

        when HTTP_REQUEST {
        if {[HTTP::header exists X-Forwarded-For]}{
        set old_xff [HTTP::header values X-Forwarded-For]
        HTTP::header remove X-Forwarded-For
        HTTP::header insert X-Forwarded-For_Org "[IP::client_addr], $old_xff"
        } else { 
        HTTP::header insert X-Forwarded-For [IP::client_addr]
        }
        }

  • 相关阅读:
    svg使用
    人生是 立体, 不是平面, 股票大作手不太好的结局
    react 管理平台
    首页性能优化
    vue 安装插件
    python中如何对list之间求交集,并集和差集
    Java中String直接复制和new String创建对象的区别以及equals和==的区别和效率对比
    关于二叉树的总结
    Postgresql 数据库,如何进行数据备份以及导入到另外的数据库
    Java List详解,面试中应该如何解答关于List的问题
  • 原文地址:https://www.cnblogs.com/zhxiaoxiao/p/12169525.html
Copyright © 2011-2022 走看看