java host头攻击漏洞_Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法...
检测到目标URL存在http host头攻击漏洞
详细描述
为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER["HTTP_HOST"]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
解决办法
web应用程序应该使用SERVER_NAME而不是host header。 在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。
威胁分值
5
危险插件
否
发现日期
2008-06-12
CVSS评分
6.1(CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)
大意为不要使用request中的serverName,也就是说host header可能会在攻击时被篡改,依赖request的方法是不可靠的,形如JSP头部中的:
String path =request.getContextPath();
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
这样的使用方法就会被漏洞检测工具查出来,认定有头攻击漏洞。
解决办法
提示中说,如果是php的话不要用SERVER_NAME,apache和Nginx通过设置虚拟机来纪要非法header,而web开发中常见的运行容器就是tomcat,网络查找出的解决方案大多不适用,最后,我们找到了一个折中的办法。
主要解决办法,就是在请求拦截上面做host合法性校验,拦截掉非法请求。
public class SessionFilter implementsFilter {public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throwsIOException,
ServletException {
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) res;//头攻击检测
String requestHost = request.getHeader("host");if (requestHost != null && !checkBlankList(requestHost)) {
response.setStatus(403);return;
}
...
}
}private booleancheckBlankList(String host){if(host.contains("10.160.79.")){return true;
}return false;
}
上述代码是常见的web系统拦截器doFilter方法,我们在方法开始的地方做host判定,如果不在白名单内,则返回403状态码。漏洞工具收到403后认为访问请求已被终止,就不会报错了。
ps:附上一些代码:
// 头攻击检测
String requestHost = request.getHeader("host");也可以尝试
req.getHeader("Host");//大小写是否有关系我未验证
req.getRemoteHost();//返回Ip
publicString getIpAddr(HttpServletRequest request) {
String ip= request.getHeader("x-forwarded-for");if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip= request.getHeader("Proxy-Client-IP");
}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip= request.getHeader("WL-Proxy-Client-IP");
}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip=request.getRemoteAddr();
}returnip;
}
req.getRemoteHost();
java host头攻击漏洞_Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法...相关推荐
- 检测到目标URL存在http host头攻击漏洞,修复方案:在Web服务器防止Host头攻击
一.前言 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不 ...
- 检测到目标URL存在http host头攻击漏洞
一.前言 漏洞描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不 ...
- Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法
2019独角兽企业重金招聘Python工程师标准>>> 如果此博文很幸运的帮助到了您,请问我点个赞吧(✪ω✪)谢谢 1.问题漏洞描述 2.JSP头部中有如下代码,这样的使用方法就会被 ...
- java socket建立长连接_Java Web项目中使用Socket通信多线程、长连接的方法
很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接 ...
- 检测到目标URL存在http host头攻击漏洞(中风险)
漏洞描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST"].但是这个header是不可信赖的, ...
- java部署到服务器乱码_java web项目发布到linux服务器上运行出现乱码
我们项目的开发是在windows下完成的. 然后导出.sql数据库文件,并导出war包,准备部署到linux下的tomcat服务器上. 部署完成出现中文问题: 问题描述: 1.数据库中原有的数据都能正 ...
- Eclipse Java Oxygen不能创建动态的web项目(解决方法)
Eclipse Java Oxygen不能创建动态的web项目(解决方法) 一.eclipse安装J2EE插件 一.eclipse安装J2EE插件 Oxygen版本Eclipse没有toamct开发工 ...
- 错误:无法打开web项目”****“,文件路径“****”与url“**”不符。这两者要映射到相同的服务器位置。...
问题出现的环境: 现在解决方案中有3个项目(2个类库,1个web),因为原来搭建项目的服务器要做别的用,所以要做个项目"迁移". 在现在的服务器上安装完开发环境,拷贝过来项目文件, ...
- java jvm bind解决_java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意...
java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意了 凯哥Java 凯哥java 记录帮朋友解决JVM_Bind错误. java web项目启动的时候 ...
最新文章
- 提高EDA(探索性数据分析)效率的 3 个简单工具
- union--求集合的并集
- bootstrap内容部分API解读(2)
- 前端学习(2961):前一天回顾
- python测验9答案_【Python基础测试】你知道这些答案吗?
- HDU 2243 考研路茫茫——单词情结(AC自动机 + 矩阵快速幂)题解
- c语言一个偶数用两个素数表示,用C语言(C99) 验证哥德巴赫猜想:一个不小于6的偶数必定能表示为两个素数之和。...
- CSS选择器的权重计算
- 阿里云CentOS 6.8 + WordPress + 芒果云KODExplorer
- Android 答题App
- vue中模拟试卷出题,
- whisper客服源码_whisper客服系统兼容HTTPS方案
- redis 修改默认端口号6379(Windows)
- Java集合与泛型学习笔记
- 【Idea】Refactor
- 关键对话:如何高效能沟通
- 基于监督学习+自监督学习的智能抠图,精确到头发丝 | CVPR2020
- Busuanzi网站统计失效问题
- 如何使用Node.js连接数据库
- leetcode系列--216.组合总和 III
热门文章
- Excel比较两个工作表(Sheet)的两组列数据,并返回相应数据
- 基本算法汇总(长文)
- react 引入远程 动态图片 和 引入本地 图片
- 使用okhttp3报错 The type okio.ByteString cannot be resolved. It is indirectly referenced
- SQL中的多表关联和子查询
- IMS:injectInputEvent注入Input事件
- bldc不同载波频率_有刷CD电机好用还是无刷BLDC电机好用?该选那个?
- w10用计算机卸载,Win10专业版电脑里的软件如何卸载干净?
- Android辅助工具,G分助手的实现 - 心悦俱乐部app自动签到、领G分
- 针对meshlab应用纹理出现错误的解决方法(You need to have at least one valid raster layer in your project)