URL存在http host頭攻擊漏洞。
http協議中,host值經常被使用於jsp 中獲取上下文,如果不做驗證,很容易被引用其他途徑的資源。
cmd中運行,curl 去官網下載解壓就能用(你想全局用,就設置環境變量吧,這個博文也很多)
curl -i "www.baidu.com" -v -H "Host:www.baidu2.com"| more
通過-H 參數,修改http頭內容。正常情況下,host 是請求地址去掉端口號,如下。
所以,防止此漏洞的思路。
方式一:在nginx(如果有的話。沒有ng就去tomcat 的 server.xml中配置)中做白名單判斷。
方式二:在nginx中做變量匹配(請求地址和host參數值做相似對比),應該這種方式是最合理的。
目前我實現的是方式一。
在nginx.conf文件中,"server { listen 80; ..... "中 增加
set $flag 0;
if ($host = "www.baidu.com"){
set $flag 1;
}
if ($host = "www.baidu-test.com"){
set $flag 1;
}
if ($flag = "0"){
return 233; //不在白名單內的host值,報錯
}
因爲我這版本的ng不支持或運算,所以,使用變量判斷的方式實現白名單功能。