java源代码风险漏洞 java代码漏洞扫描( 九 )


4、URL链接注入漏洞防护
链接注入是修改站点内容的行为,其方式为将外部站点的 URL 嵌入其中,或将有易受攻击的站点中的脚本 的 URL 嵌入其中 。将URL 嵌入易受攻击的站点中,攻击者便能够以它为平台来启动对其他站点的攻击 , 以及攻击这个易受攻击的站点本身 。
解决方案:
1,二次验证,进行重要敏感操作时,要求用户进行二次验证 。
2 , 验证码 , 进行重要敏感操作时 , 加入验证码 。
3,验证 HTTP 的 Referer 字段 。
4,请求地址中添加 Token 并验证 。
5,HTTP 头中自定义属性并验证 。
5、会话COOKIE中缺少HttpOnly防护
会话cookie中缺少HttpOnly属性会导致攻击者可以通过程序(JS脚本、Applet等)获取到用户的cookie信息 , 造成用户cookie信息泄露,增加攻击者的跨站脚本攻击威胁 。
HttpOnly是微软对cookie做的扩展 , 该值指定cookie是否可通过客户端脚本访问 。Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持cookie属性HttpOnly 。
如果在Cookie中没有设置HttpOnly属性为true,可能导致Cookie被窃取 。窃取的Cookie可以包含标识站点用户的敏感信息 。
如果在Cookie中设置HttpOnly属性为true,兼容浏览器接收到HttpOnly cookie,那么客户端通过程序(JS脚本、Applet等)将无法读取到Cookie信息 , 这将有助于缓解跨站点脚本威胁 。
解决方案:
配置filter拦截器,将服务器端返回请求,向所有会话cookie中添加“HttpOnly”属性 。
示例代码:
HttpServletResponseresponse=(HttpServletResponse)paramServletResponse;
response.setHeader("SET-COOKIE","JSESSIONID=" + sessionid + "; HttpOnly");
6、点击劫持漏洞(Clickjacking)防护
点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe , 覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户在不知情的情况下点击了透明的iframe页面 。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上 。
解决方案:
配置FILTER拦截器 , 在服务器端返回请求中,使用一个HTTP头“X-Frame-Options”值为SAMEORIGIN-同源策略,则frame页面的地址只能为同源域名下面的页面,防止点击劫持漏洞发生 。
示例代码:
HttpServletResponseresponse=(HttpServletResponse)paramServletResponse;
response.addHeader("x-frame-options","SAMEORIGIN");
7、HTTP host 头攻击漏洞
使用HTTP代理工具,可以篡改HTTP报文头部中HOST字段时,该值可被注入恶意代码 。因为需要控制客户端的输入,故该漏洞较难利用 。
解决方案:
配置FILTER拦截器,对请求输入HOST头信息进行信息安全性校验 , 防止HOST头信息被恶意篡改利用 。
示例代码:
HttpServletRequest request =(HttpServletRequest)servletRequest;
//主机ip和端口 或 域名和端口
String myhosts = request.getHeader("host");
if(!StringUtils.equals(myhosts, "xx.xx.xxx.xxx:xxxx")
!StringUtils.equals(myhosts, "xx.xx.xxx.xxx:xxxx")
!StringUtils.equals(myhosts,"xx.xx.xxx.xxx:xxxx")StringUtils.equals(myhosts,"xx.xx.xxx.xxx")
!StringUtils.equals(myhosts,"xx.xx.xxx.xxx")!StringUtils.equals(myhosts,"xx.xx.xxx.xxx" ){
logger.error("======访问host非法 , 已拦截======");
response.sendRedirect(request.getContextPath() + "/login.jsp");
return;
}
8、越权访问漏洞防护
越权访问(Broken Access Control , 简称BAC)是Web应用程序中一种常见的漏洞,分为垂直越权访问和水平越权访问 。垂直越权是指不同用户级别之间的越权,如普通用户执行管理员用户的权限 。水平越权是指相同级别用户之间的越权操作 。

推荐阅读