0x00 前言
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
A1:2017-注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
如何防止?
• 防止注入漏洞需要将数据与命令语句、查询语句分隔开来。
• 最佳选择是使用安全的API,完全避免使用解释器,或提供参数
化界面的接口,或迁移到ORM或实体框架。
• 注意:当参数化时,存储过程仍然可以引入SQL注入,如果
PL/SQL或T-SQL将查询和数据连接在一起,或者执行带有立即
执行或exec()的恶意数据。
• 使用正确的或“白名单”的具有恰当规范化的输入验证方法同样
会有助于防止注入攻击,但这不是一个完整的防御,因为许多应
用程序在输入中需要特殊字符,例如文本区域或移动应用程序的
API。 • 对于任何剩余的动态查询,可以使用该解释器的特定转义语法转
义特殊字符。OWASP的Java Encoder和类似的库提供了这样的
转义例程。
• 注意:SQL结构,比如:表名、列名等无法转义,因此用户提供
的结构名是非常危险的。这是编写软件中的一个常见问题。
• 在查询中使用LIMIT和其他SQL控件,以防止在SQL注入时大量
地泄露记录。
A2:2017-失效的身份认证
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。
如何防止?
• 在可能的情况下,实现多因素身份验证,以防止自动、凭证填充、
暴力破解和被盗凭据再利用攻击。
• 不要使用发送或部署默认的凭证,特别是管理员用户。
• 执行弱密码检查,例如测试新或变更的密码,以纠正“排名前
10000个弱密码” 列表。
• 将密码长度、复杂性和循环策略与NIST-800-63 B的指导方针的
5.1.1章节-记住秘密,或其他现代的基于证据的密码策略相一致。
• 确认注册、凭