Web專案中host頭攻擊漏洞
阿新 • • 發佈:2019-01-23
===============
Web專案在通過綠盟軟體掃描的時候,提示“檢測到目標URL存在http host頭攻擊漏洞”。漏洞的本意是,HTTP請求帶了HOST頭,WEB取了該HOST頭作進一步動作,例如拼接URL。如果這個HOST是黑客非法偽造的,比如evil.com,那麼拼接之後的URL就可能是http://evil.com/key=?value=,從而導致己方網站資訊的洩露。解決方法如下:
設定一個過濾器,使用白名單對每次訪問網站的HOST進行過濾。即當訪問時,獲取訪問的Host,並與白名單中的資訊進行比對,如果在白名單中有匹配的Host,則正常訪問,否則,拒絕訪問。
package ...
public class ExampleFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest hreq = (HttpServletRequest) request;
HttpServletResponse hres = (HttpServletResponse) response;
//取請求Host
String hostinfo = hreq.getHeader("header").trim();
//讀取白名單
String[] whiteHostList = getWhiteList();
//進行比對
for(String whiteHost : whiteHostList) {
if(whiteHost.equals(hostinfo)) {
//說明訪問者在白名單中
chain.doFilter(request,response);
} else {
setMessage("非法Host訪問,訪問無效!");
return;
}
}
}
}