密级:保密
                                       
WEB开发安全漏洞修复方案
V1.0
文档编号:
文档名称:
WEB开发安全漏洞修复方案
    写:
    核:
    准:
批准日期:
技术研究部
文档修订记录
编号
版本号
修订内容简述
修订日期
作者
审核
1
V1.0
初稿
2012-7
6
7
8
9
10
11
12
jsessionid
13
14
15
16
 
1.1背景
随着移动公司对信息安全的进一步加强,要求我们部署的系统必须满足安全扫描要求。
本文档描述了安徽移动对FSDP安全扫描的漏洞的解决方案,并作为WEB开发的安全编程规范。
1.2FSDP安全漏洞清单
见《WEB开发安全漏洞清单.xlsx》
1.3安全漏洞修复方案
1.3.1会话标识未更新
(一)URL
10.149.113.200/loginAction.do
(二)安全问题描述
根据WASC会话固定是一种攻击技术,会强制用户的会话标识变成显式值。固定会话标识值的技术有许多种,会随着目标Web 站点的功能而不同。从利用跨站点脚本编
到向Web 站点密集发出先前生成的HTTP 请求,都在这些技术范围内。用户的会话标识固定之后,攻击者会等待用户登录,然后利用预定义的会话标识值来假定用户的联机身份。
(三)攻击方法
登录过程前后会话标识的比较,显示它们并未更新,这表示有可能伪装用户。初步得知会话标识值后,远程攻击者有可能得以充当已登录的合法用户。
    任何时候,只要一名用户与应用程序的交互状态由匿名转变为确认,应用程序就应该发布一个新的会话令牌。这不仅适用于用户成功登录的情况,而且适用于匿名用户首次提交个人或其他敏感信息时。
(四)安全规范要求
COOKIE中的登陆前JSESSIONID与登陆后JESSIONID不能相同。(只有J2EE应用服务器为JESSIONID,其他应用服务器可能不同)
(五)解决方案
将如下代码加入到登陆页面(login.jsp)的最后行:
<%
    Session().invalidate();//清空session
    Cookie cookie = Cookies()[0];//获取cookie
    cookie.setMaxAge(0);//让cookie过期
%>
1.3.2登录错误消息凭证枚举
(一)URL
10.149.113.200/loginAction.do
(二)安全问题描述
当试图利用不正确的凭证来登录时,当用户输入无效的用户名和无效的密码时,应用程序会分别生成不同的错误消息。
通过利用该行为,攻击者可以通过反复试验(蛮力攻击技术)来发现应用程序的有效用户名,再继续尝试发现相关联的密码。这样会得到有效用户名和密码的枚举,攻击者可以用来访问帐户。
(三)攻击方法
修改10.149.113.200/loginAction.do HTTP报文头:将参数“optrid”的值设置为“test123WithSomeChars”,除去cookie“JSESSIONID”,除去HTTP 头“Cookie=JSESSIONID”。
(四)安全规范要求
对每个错误的登录尝试发出相同的错误消息,不管是哪个字段发生错误,特别是用户名或密码字段错误。
(五)解决方案
LoginImpl.java类中getLoginInfo方法,涉及到登录错误提示的都改成:
“您输入的用户名或密码不正确!”。
登录超过3次数的改成:
“您尝试登陆失败超过"+Constans.LOGIN_ERROR_TIMES+"次,请30分钟后再登陆!”。
1.3.3不充分帐户封锁
(一)URL
10.149.113.200/loginAction.do
(一)安全问题描述
发送了两次合法的登录尝试,并且在其间发送了几次错误的登录尝试。最后一个响应与第一个响应相同。这表明存在未充分实施帐户封锁的情况,从而使登录页面可能受到蛮力攻
击。(即使第一个响应不是成功的登录页面,也是如此。)
(二)攻击方法
修改10.149.113.200/loginAction.do HTTP报文头:除去cookie“JSESSIONID”,除去HTTP “Cookie=JSESSIONID”
(三)安全规范要求
多次登录尝试失败后实施帐户封锁
(四)解决方案
LoginImp.java中的getLoginInfo方法,修订如下代码片段:
//判断登陆失败次数
        if(!checkLoginError(logininfo)){
            ret.setRetCode("0003");
            ret.setRetDesc("您尝试登陆失败超过"+Constans.LOGIN_ERROR_TIMES+"次,请"+Constans.LOGIN_ERROR_LOCK_SECOND+"分钟后再登录!");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。