公司开发的代码都需要进行代码扫描。
目标URL存在http host头攻击漏洞:
漏洞描述:
详细描述
为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。
例如,在php里用_SERVER["HTTP_HOST"]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
话不多说上代码:
Filter类
package com.songxinfeng;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HostFilter extends HttpServlet implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
String requestHost=request.getHeader("host");
//host非空 未通过白名单则禁止访问
if(null != requestHost&&!"".equals(requestHost)&&!checkWhiteList(requestHost)){
response.setStatus(403);//
return;
}
chain.doFilter(req, res);//放行
}
/**
* 验证白名单
* @return true 验证通过 在白名单中
* @return false 验证未通过 不在白名单中
*/
private boolean checkWhiteList(String host){
if(host.contains("10.5")){
return true;
}
return false;
}
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xml中配置(注意配置放到最上面,让这个Filter先走)
<filter>
<filter-name>HostFilter</filter-name>
<filter-class>com.songxinfeng.HostFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HostFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filter中验证白名单可以通过读取配置文件进行。
有时间在添加吧。
想添加却不会的可以留言。