方法一:過濾器
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
// http host頭攻擊漏洞校驗
HttpServletResponse res = (HttpServletResponse) response;
String requestHost = req.getHeader("host");
if (requestHost != null && isRightHost(requestHost)){
res.setStatus(403);
return;
}
chain.doFilter(request, response);
}
// http host頭漏洞攻擊判斷
public boolean isRightHost(String requestHost){
if(requestHost.indexOf("www.xxx.com") == -1 && requestHost.indexOf("服務器IP") == -1) {
return true;
}
return false;
}
方法二:nginx
if ($http_Host != '域名或ip:端口'){
return 403;
}
或
if ($http_Host !~*^域名或ip:端口$) {
return 403;這里可以自定義界面 參考
}
方法三:tomcat
Tomcat,修改server.xml文件,配置Host的name屬性。
將Host里的name修改為靜態的域名,如下:

