Skip to content

第十八章 信息的透传 疑问 #10

Answered by mileszhang2016
coder-user asked this question in Q&A
Discussion options

You must be logged in to vote

你提了一个非常好的问题。我尝试解答如下:

如果使用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的内容进行分析。如果都做了改写,则相当于把外网带来的这个信息都丢弃了。

推荐的做法是:

  1. 按照规范,在X-Forwarded-For的末尾增加BFE的地址
  2. 使用独立的头部,用于传递“BFE看到的”客户端IP地址

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by mileszhang2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants
Converted from issue

This discussion was converted from issue #9 on November 24, 2021 09:01.