本文主要是介绍OWASP top10(OWASP十大应用安全风险)之A1 注入 (Injection),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OWASP TOP10
简介
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
top1 注入(Injection)
当攻击者将无效数据发送到Web应用程序以使其执行该应用程序未设计/编程的操作时,就会发生代码注入。
解决此安全漏洞的最常见示例可能是使用不受信任数据的SQL查询。您可以在下面看到OWASP的示例之一:
String query = “SELECT * FROM accounts WHERE custID = ‘” + request.getParameter(“id”) + “‘”;
代码注入漏洞的核心是缺乏对Web应用程序使用的数据的验证和清理,这意味着该漏洞几乎可以存在于任何类型的技术上。
任何接受参数作为输入的内容都可能容易受到代码注入攻击。
这是另一个SQL注入示例,影响了超过50万个具有WordPress 的YITH WooCommerce愿望清单插件的网站:
上面显示的SQL注入可能会导致敏感数据泄漏并损害整个WordPress安装。
那我们又该如何防止呢?
- 防止代码注入漏洞确实取决于我们在网站上使用的技术。例如,如果使用WordPress,则可以通过将代码注入漏洞保持在最少的已安装插件和主题范围内,从而最大程度地减少代码注入漏洞。
- 如果拥有一个量身定制的Web应用程序和一个专门的开发人员团队,则需要确保开发人员在设计和编写软件时可以遵循的安全要求。这将使他们能够在项目的生命周期中继续考虑安全性。
建议
- 首选选项是使用安全的API,该API避免完全使用解释器,或者提供参数化的接口或迁移为使用对象关系映射工具(ORM)。注意:即使参数化了,但是如果PL / SQL或T-SQL连接查询和数据,或者使用EXECUTE
IMMEDIATE或exec()执行恶意数据,则存储过程仍然可以引入SQL注入。 - 使用肯定或“白名单”服务器端输入验证。由于许多应用程序都需要特殊字符,例如文本区域或移动应用程序的API,因此这并不是一个完整的防御措施。
- 对于任何残留的动态查询,请使用该解释程序的特定转义语法来转义特殊字符。注意:表名,列名等SQL结构无法转义,因此用户提供的结构名很危险。这是报表编写软件中的常见问题。
- 在查询中使用LIMIT和其他SQL控件可防止在SQL注入的情况下大量泄露记录。
总结
- 数据与Web应用程序逻辑的分离。
- 实施设置和/或限制,以在成功进行注入攻击的情况下限制数据公开。
这篇关于OWASP top10(OWASP十大应用安全风险)之A1 注入 (Injection)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!