没有合适的资源?快使用搜索试试~ 我知道了~
首页WEB开发安全漏洞修复方案
WEB开发安全漏洞修复方案
需积分: 50 565 浏览量
更新于2023-05-28
评论
收藏 83KB DOCX 举报
1.1 背景 1 1.2 FSDP安全漏洞清单 1 1.3 安全漏洞修复方案 1 1.3.1 会话标识未更新 1 1.3.2 登录错误消息凭证枚举 2 1.3.3 不充分帐户封锁 2 1.3.4 跨站点脚本编制 3 1.3.5 已解密的登录请求 6 1.3.6 跨站点脚本编制 9 1.3.7 通过框架钓鱼 13 1.3.8 链接注入(便于跨站请求伪造) 18 1.3.9 应用程序错误 25 1.3.10 SQL注入 29 1.3.11 发现数据库错误模式 38 1.3.12 启用了不安全的HTTP方法 48 1.3.13 发现电子邮件地址模式 50 1.3.14 HTML注释敏感信息泄露 51 1.3.15 发现内部IP泄露模式 52 1.3.16 主机允许从任何域进行flash访问 53 1.3.17 主机应用软件漏洞修复 53 1.3.18 目录列表 54 1.3.19 跨站点请求伪造 55 1.1 需要注意的问题 56
资源详情
资源评论
资源推荐

密级:保密
WEB 开发安全漏洞修复方案
(V1.0)
文档编号: 文档名称: 开发安全漏洞修复方案
编 写: 审 核:
批 准: 批准日期:
技术研究部

安全规范
()
背景
安全漏洞清单
安全漏洞修复方案
会话标识未更新
登录错误消息凭证枚举
不充分帐户封锁
跨站点脚本编制
已解密的登录请求
跨站点脚本编制
通过框架钓鱼
链接注入(便于跨站请求伪造)
应用程序错误
注入
发现数据库错误模式
启用了不安全的 方法
发现电子邮件地址模式
注释敏感信息泄露
发现内部 泄露模式
主机允许从任何域进行 访问
主机应用软件漏洞修复
目录列表
跨站点请求伪造
需要注意的问题
用户锁定解锁功能

1.1 背景
随着移动公司对信息安全的进一步加强,要求我们部署的系统必须满足安全扫描要求。
本文档描述了安徽移动对 FSDP 安全扫描的漏洞的解决方案,并作为 WEB 开发的安全编程规
范。
1.2 FSDP 安全漏洞清单
见《WEB 开发安全漏洞清单.xlsx》
1.3 安全漏洞修复方案
1.3.1 会话标识未更新
(一) URL
http://10.149.113.200/loginAction.do
(二) 安全问题描述
根据 WASC:“会话固定”是一种攻击技术,会强制用户的会话标识变成显式值。固定会
话标识值的技术有许多种,会随着目标 Web 站点的功能而不同。从利用“跨站点脚本编
制”到向 Web 站点密集发出先前生成的 HTTP 请求,都在这些技术范围内。用户的会话标
识固定之后,攻击者会等待用户登录,然后利用预定义的会话标识值来假定用户的联机身份。
(三) 攻击方法
登录过程前后会话标识的比较,显示它们并未更新,这表示有可能伪装用户。初步得
知会话标识值后,远程攻击者有可能得以充当已登录的合法用户。
任何时候,只要一名用户与应用程序的交互状态由匿名转变为确认,应用程序就应该发
布一个新的会话令牌。这不仅适用于用户成功登录的情况,而且适用于匿名用户首次提交个
人或其他敏感信息时。
(四) 安全规范要求
COOKIE 中的登陆前 JSESSIONID 与登陆后 JESSIONID 不能相同。(只有 J2EE 应用
服务器为 JESSIONID,其他应用服务器可能不同)
(五) 解决方案
将如下代码加入到登陆页面(login.jsp)的最后行:
<%
request.getSession().invalidate();//清空 session
Cookie cookie = request.getCookies()[0];//获取 cookie
cookie.setMaxAge(0);//让 cookie 过期
%>

安全规范
1.3.2 登录错误消息凭证枚举
(一) URL
http://10.149.113.200/loginAction.do
(二) 安全问题描述
当试图利用不正确的凭证来登录时,当用户输入无效的用户名和无效的密码时,应用程
序会分别生成不同的错误消息。
通过利用该行为,攻击者可以通过反复试验(蛮力攻击技术)来发现应用程序的有效用
户名,再继续尝试发现相关联的密码。这样会得到有效用户名和密码的枚举,攻击者可以用
来访问帐户。
(三) 攻击方法
修改 http://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
!"###$%&'() &$'*$
(一) 安全问题描述
发送了两次合法的登录尝试,并且在其间发送了几次错误的登录尝试。最后一个响应与
第一个响应相同。这表明存在未充分实施帐户封锁的情况,从而使登录页面可能受到蛮力攻
击。(即使第一个响应不是成功的登录页面,也是如此。)
(二) 攻击方法
修改 http://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+"分钟后再登录!");
return ret;
}
//增加验证登陆错误次数代码
addLoginErrorRec(logininfo);
1.3.4 跨站点脚本编制
(一) URL
http://10.149.113.200/callAction.do
http://10.149.113.200/loginAction.do
(二) 安全问题描述
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够
以该用户身份查看或变更用户记录以及执行事务。
(三) 攻击方法
Web 站点中所包含的脚本直接将用户在 HTML 页面中的输入(通常
是参数值)返回,而不预先加以清理。如果脚本在响应页面中返回由 JavaScript 代码组成
的输入,浏览器便可以执行此输入。因此,有可能形成指向站点的若干链接,且其中一个参
数包含恶意的 JavaScript 代码。该代码将在站点上下文中(由用户浏览器)执行,这使得
该代码有权访问用户在该站点中具有访问权的 cookie,以及站点中其他可通过用户浏览器
访问的窗口。
攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。用户单击该
链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。如
剩余51页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0