PVS-Studio Java 分析器:通过污点分析增强安全性
服务器端代码的很大一部分依赖于 Java。 因此,基于 Java 的 Web 应用程序必须能够抵御安全漏洞。本文重点介绍静态应用程序安全测试 (SAST) 作为一种重要的防御机制,特别强调了污点分析的作用。
了解焦点
我们的 Java 分析器现在包含用于创建诊断规则的功能,以识别源自外部源的受污染数据。 这种功能长期以来在我们的 C 和 C# 分析器中建立,现在也可用于 Java。 本文对污染数据检测及其优点进行了高级概述。 如需更深入的理论探索,请参阅我们的 Java 团队负责人的随附文章(提供链接)。
本讨论以常见 Web 应用程序漏洞为中心,重点关注 OWASP Top 10。
漏洞及其影响
应用程序漏洞是可用来破坏操作的缺陷。 虽然存在多种测试方法,但 SAST 提供了一种主动的方法。
SAST:早期漏洞检测
SAST(静态应用程序安全测试)分析代码中的潜在漏洞,识别为可能被攻击者利用的“缺陷”。 SAST 的主要优势是在开发过程中及早发现漏洞。
SAST 和成本节省
修复漏洞的成本随着每个开发阶段呈指数级增长(NIST 研究证实了这一点)。 在发布后解决漏洞的成本要高得多,需要开发人员投入时间和资源,并可能导致声誉受损和财务损失。 SAST 通过及早发现问题来最大限度地降低这些成本。
OWASP Top 10:SAST 的基准
OWASP(开放全球应用程序安全项目)前 10 名列出了最关键的 Web 应用程序漏洞。 该排名基于来自安全专家、错误赏金计划和开发公司的真实数据,为 SAST 解决方案提供了宝贵的基准。 2021 年 OWASP Top 10 来自对超过 500,000 个项目的分析,被广泛认为是一个标准。
检查漏洞:SQL 注入
让我们检查一下 SQL 注入,这是一个允许攻击者将代码注入数据库查询的漏洞。 当用户输入直接用于查询而不进行适当的预处理或验证时,可以利用此漏洞。
考虑带有文章搜索表格的网站。 如果将用户输入直接连接到数据库查询中,则可以注入恶意代码。 例如,输入' drop table articles; --
可以删除整个文章表。
>示例:脆弱的sql Query
><code class="language-java">// Vulnerable code String sql = "SELECT * FROM DEMO_TABLE WHERE field = '" + name + "'";</code>
缓解:参数化查询
为防止SQL注入,请使用参数化查询:
<code class="language-java">// Secure code String sql = "SELECT * FROM DEMO_TABLE WHERE field = ?";</code>
密钥术语:
污点分析:解决方案
>污点分析跟踪从源到水槽的数据流。 如果未设置的数据到达一个接收器,则将其标记为潜在的漏洞。
进一步阅读 提供了有关污点分析实现的更详细的文章。
结论
以上是Java、Taint 和 SAST:它是什么以及我们为什么需要它?的详细内容。更多信息请关注PHP中文网其他相关文章!