13 OWASP TOP10(2017年)
注:OWASP是世界上最知名的Web安全与数据库安全研究组织
参考文档:
https://blog.csdn.net/lifetragedy/article/details/52573897
http://www.sohu.com/a/139968130_669829
13.1 SQL注入
通过sql语句,插入到web表单提交或输入域名或页面请求的查询字符串,达到欺骗服务器执行恶意sql语句的目的。
(网站,数据库代码的不严谨性,从而出现漏洞,被攻击者利用,进行表单提交,从而获取对应的信息或者获取对应的权限。)
13.1.1 防护
1、 不要相信用户的输入,对用户输入要校验以及有长度限制,对对应的符号进行转换。
2、 不要使用管理员账号链接数据库,为不同的应用创建单独的权限。
3、 不要使用动态拼装sql语句
4、 不要直接存放机密信息,要进行相应的加密。
5、 应用返回的错误信息不要太详细。
6、 使用对应的检测工具进行sql注入攻击检查,如jsky
13.2 失效的身份认证和会话管理
(本该失效的身份认证却没有失效,从而被恶意攻击者利用)
13.2.1 参考文档:
https://blog.csdn.net/quiet_girl/article/details/50585934
身份认证:更多时候体现在用户登陆需要账号、密码,为了防止穷举法,添加验证码,或者证书,或者类似网银U盾支付确认的物理认证。
会话管理,HTTP本身是无状态的,利用会话管理机制来实现连接识别。身份认证的结果往往是获得一个令牌,通常放在cookie中,之后对用户身份的识别根据这个授权的令牌进行识别,而不需要每次都要登陆。
13.2.2 一些存在此漏洞的例子:
1、用户更改密码之前不验证用户,而是依靠会话的IP地址;
2、没有会话超时限制;
3、用户忘记密码后,密码找回功能太过简单。
4、。。。
例1:应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。
例2:机票预订应用程序支持URL重写,把会话ID放在URL里:http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii
该网站一个经过认证的用户希望让他朋友知道这个机票打折信息。他将上面链接通过邮件发给他朋友们,并不知道自己已经泄漏了自己的会话ID。当他的朋友们使用上面的链接时,他们将会使用他的会话和信用卡。
例3:内部或外部攻击者进入系统的密码数据库. 存储在数据库中的用户密码没有被加密, 所有用户的密码都被攻击者获得。
13.2.3 如何验证程序是否存在失效的认证和会话管理?
最需要要保护的数据是认证凭证(credentials) 和会话ID。
1.当存储认证凭证时,是否总是使用hashing或加密保护吗?
2. 认证凭证是否可猜测,或者能够通过薄弱的的帐户管理功能
(例如账户创建、密码修改、密码恢复, 弱会话ID)重写?
3.会话ID是否暴露在URL里(例如, URL重写) ?
4.会话ID是否容易受到会话固定(session fixation) 的攻击?
5.会话ID会超时吗? 用户能退出吗?
6.成功注册后,会话ID会轮转吗?
7. 密码、会话ID和其他认证凭据是否只通过TLS连接传输?
13.2.4 如何防范:
1、区分公共区域和受限区域
站点的公共区域允许任何用户进行匿名访问。受限区域只能接受特定用户的访问,而且用户必须通过站点的身份验证。考虑一个典型的零售网站。您可以匿名浏览产品分类。当您向购物车中添加物品时,应用程序将使用会话标识符验证您的身份。最后,当您下订单时,即可执行安全的交易。这需要您进行登录,以便通过SSL 验证交易。
将站点分割为公共访问区域和受限访问区域,可以在该站点的不同区域使用不同的身份验证和授权规则,从而限制对 SSL 的使用。使用SSL 会导致性能下降,为了避免不必要的系统开销,在设计站点时,应该在要求验证访问的区域限制使用 SSL。
2、对最终用户帐户使用帐户锁定策略
当最终用户帐户几次登录尝试失败后,可以禁用该帐户或将事件写入日志。如果使用 Windows 验证(如 NTLM 或Kerberos协议),操作系统可以自动配置并应用这些策略。如果使用表单验证,则这些策略是应用程序应该完成的任务,必须在设计阶段将这些策略合并到应