- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见WEB开发安全漏洞原因分析及解决
常见WEB开发安全漏洞
原因分析及解决
目 录
1 会话标识未更新 3
1.1 原因 3
1.2 解决 3
2 SQL注入 3
2.1 原因 3
2.2 解决 5
3 XSS跨站脚本编制 5
3.1 原因 5
3.2 解决 5
4 XSRF跨站请求伪造 7
4.1 原因 7
4.2 解决 8
5 登录错误消息凭证枚举(不充分帐户封锁) 8
5.1 原因 8
5.2 解决 9
6 HTML注释敏感信息泄露 9
6.1 原因 9
6.2 解决 9
7 应用程序错误 9
7.1 原因 9
7.2 解决 9
8 已解密的登录请求 9
8.1 原因 9
8.2 解决 9
9 启用了不安全的HTTP方法 10
9.1 原因 10
9.2 解决 10
10 禁止页面缓存 11
10.1 原因 11
10.2 解决 11
11 数据库错误模式 11
11.1 原因 11
11.2 解决 12
会话标识未更新
原因
在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改变,也就是说还是以前的那个session(事实上session也确实不会改变,因为没有建立新session,原来的session也没有被销毁)。会话invalidate没有用request.getSession().invalidate();),是因为invalidate方法不是真正的将session销毁,只是将session中的内容清空,所以当invalidate以后再新建session,新建的session其实不是新的,是将之前的session重新启用了。于是session的id不变就不奇怪了。request.getSession().invalidate() ; //清空session
if (request.getCookies()!=null) {? Cookie cookie = request.getCookies()[0]; // 获取cookie?cookie.setMaxAge(0); // 让cookie过期}
没有正确过滤转义字符在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:statement := SELECT * FROM users WHERE name = + userName + ;
将用户名变量(即username)设置为:a or t=t,此时原始语句发生了变化如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:statement := SELECT * FROM data WHERE id = + a_variable + ;
从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_variable设置为:1; DROP TABLE users,它会将“users”表从数据库中删除,SQL语句变成:SELECT * FROM DATA WHERE id = 1; DROP TABLE users;
数据库服务器中的漏洞有时,数据库服务器软件中也存在着漏洞,如MYSQL服务器中mysql_real_escape_string()函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的SQL注入式攻击。盲目SQL注入式攻击当一个Web应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目SQL注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为Absinthe的工具就可以使这种攻击自动化。条件响应注意,有一种SQL注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值:SELECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=1
这会导致一个标准的面面,而语句SELECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=2
在页面易于受到SQL注入式攻击时,它有可能给出
原创力文档


文档评论(0)