第十八章 信息的透传 疑问 #10
-
透传方案 在经过BFE转发后,在请求头部会增加2个字段: X-Real-Ip:用于传递原始的客户端IP地址 有些人可能会考虑从“X-Forwarded-For”来获取客户端的IP地址。BFE使用独立定义的“X-Real-Ip”是为了避免“X-Forwarded-For”被伪造。如果请求在到达BFE时已经包含了“X-Real-Ip”字段,BFE会将这个字段的值重写为BFE所见的客户端IP地址,从而避免这个字段被伪造。 没明白为什么不能使用 X-Forwarded-For ,同“X-Real-Ip”处理,如果请求在到达BFE时已经包含 "X-Forwarded-For" 字段, BFE会将这个字段的值重写为BFE所见的客户端IP地址,从而避免这个字段被伪造。 有什么问题吗? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
你提了一个非常好的问题。我尝试解答如下: 如果使用X-Forwarded-For来向下游传递Client IP,会有一些困惑。因为会有以下2种情况: 情况二:如果请求中已经包含X-Forwarded-For头部 在第二种情况下,client的地址可能为伪造,而BFE也不能将X-Forwarded-For的值如第一种情况那样做整体改写 -- 推荐的做法是:
|
Beta Was this translation helpful? Give feedback.
你提了一个非常好的问题。我尝试解答如下:
如果使用X-Forwarded-For来向下游传递Client IP,会有一些困惑。因为会有以下2种情况:
情况一: 如果请求中本来没有包含X-Forwarded-For头部
那么BFE可以添加新的头部, X-Forwarded-For: client-ip, bfe的地址
情况二:如果请求中已经包含X-Forwarded-For头部
如,X-Forwarded-For: client1, proxy1, proxy2, proxy3
那么BFE需要将自己的地址添加到末尾 X-Forwarded-For: client1, proxy1, proxy2, proxy3,BFE的地址
在第二种情况下,client的地址可能为伪造,而BFE也不能将X-Forwarded-For的值如第一种情况那样做整体改写 --
因为有时还要对X-Forwarded-For的内容进行分析。如果都做了改写,则相当于把外网带来的这个信息都丢弃了。
推荐的做法是: