OWASP的 Web应用程序十大风险列表是一种广泛理解的工具,用于理解,描述和评估主要的应用程序安全风险。 它用于对安全测试工具发现的问题进行分类,以解释安全软件开发培训中的appsec问题,并将其刻录到PCI DSS之类的合规性框架中。
OWASP针对Web应用程序的前10名和针对移动应用程序的前10名风险列表是由安全专家为其他安全专家,笔测试人员和法规遵从性审核人员编写的。 它们对于了解应用程序有什么问题或可能有什么问题是很有用的,但是它们并不能帮助开发人员了解他们构建安全软件所需采取的措施。
现在,OWASP已为开发人员撰写了十大清单 :开发人员可以并且应该做的十件事,以构建安全的在线应用程序。 此“主动控制”列表涵盖了需求,体系结构和设计中的安全性问题,以及代码级问题。 它提供了开发系统时要遵循的清单,指向每个领域的详细指导。 所有免费在线提供。
让我们从列表上的#1开始,这是最简单但最重要的事情之一,您可以用来保护应用程序的安全:参数化数据库查询。
#1参数化数据库查询
对在线应用程序的最危险和最常见的攻击之一是SQL Injection :攻击者将恶意SQL插入动态SQL语句中。 攻击者很容易使用SQL Map或SQL Ninja等免费工具或许多其他黑客工具之一甚至通过简单的手动测试来发现SQL注入漏洞:尝试插入一个值,例如:
1'或'1'='1
输入用户名和密码或其他文本字段,然后看看会发生什么。 一旦发现SQL注入漏洞,就很容易利用。
SQL注入也是最容易解决的问题之一。 为此,您可以通过参数化数据库语句,使SQL解释器清楚地知道SQL语句的哪些部分组成命令,以及哪些部分是数据。
OWASP有一个备忘单,解释了如何在Java中(使用准备好的语句或与Hibernate一起)以及.NET / C#,ASP.NET,Ruby,PHP,Coldfusion和Perl中对查询进行参数化 。 所有这些都不难理解或正确执行。 这并不令人兴奋。 但这将阻止一些最严重的安全攻击。
SQL注入只是注入攻击的一种类型。 接下来,我们将研究如何通过“编码数据”来防止其他种类的注入攻击,或者您可以观看Jim Manico讲解编码以及YouTube上前十大主动控制的其余部分。