January 20, 2008
[安] AOLserver 記錄 client IP 的偽造問題
“......若有人故意在 header 裏添加(偽造) X-Forwarded-For 這個欄位, 他就可以騙 nslog 去記錄偽造後的 IP。......”
Re: 請問一個網頁的內容
> http://sourceforge.net/tracker/index.php?func=detail&aid=1075448&group_id=3152&atid=103152
> http://sourceforge.net/tracker/index.php?func=detail&aid=770054&group_id=3152&atid=353152
> 似乎是有bug 用戶可以蓋掉header?
應該不能算是 bug。nslog 本來就可以記錄下連線者的 IP 位
址, 但若進來的 HTTP 封包在 header 裏加入了 X-Forwarded-For
的欄位(reverse proxy server 會加入), nslog 就會改成只
記錄這個欄位裏的 IP (不然的話會只記錄到 rev-proxy 的
peer IP)。
問題是, 若有人故意在 header 裏添加(偽造) X-Forwarded-For
這個欄位, 他就可以騙 nslog 去記錄偽造後的 IP。所以他們
在討論是不是要為這個欄位設一些白名單、或開關的選項。
依據 [ 770054 ] 那一則來看, AOLserver 是自 2003-07-12
以後才放進記錄 X-Forwarded-For 的程式碼, 所以若 AOLserver
3.2 是這個日期之前的版本, 那應該只會記錄直接連線的 IP
位址, 妳去看一下現存的 log 即知。在這個日期之後的版本,
若沒使用 rev-proxy 的話, 可以將 "always_log_peer_ip"
這個參數設成 true, 就不會去管 X-Forwarded-For 欄位了,
因而避開以這個欄位來偽造 IP 位址的問題 (當然還有是其他
的偽造方法)。