安全漏洞大揭秘:手把手教你轻松防止SQL注入( 三 )


API级别的渗透测试
使用诸如Parasoft SOAtest之类的工具可以进行API级别的渗透测试以暴露SQL注入 , 在这些工具中 , 可以从现有功能测试中创建自动模糊测试 , 从而行使应用程序的业务逻辑 。 Parasoft SOAtest与著名的渗透测试工具Burp Suite集成在一起 。
使用Parasoft SOAtest执行功能测试方案时 , 将捕获测试中定义的API调用以及请求和响应流量 。 每次测试中的Burp Suite分析工具都会将流量数据传递到Burp Suite应用程序的一个单独的运行实例 , 该实例将根据其在流量数据中观察到的API参数 , 使用自己的启发式方法对API进行渗透测试 。
然后 , Burp Suite分析工具将获取Burp Suite发现的任何错误 , 并将其报告为SOAtest中与访问API的测试相关的错误 。 Parasoft SOAtest结果将报告到Parasoft的报告和分析仪表板中 。 有关其他报告功能 。
要了解有关此集成的更多信息 , 请参阅我们以前的渗透测试文章 。 有关Portswigger关于使用Burp进行SQL注入的更多信息 , 请查看其文章 。 以下是与Burp集成的工作方式的表示:
安全漏洞大揭秘:手把手教你轻松防止SQL注入文章插图
安全漏洞大揭秘:手把手教你轻松防止SQL注入!
将这种类型的渗透测试集成到您的CI/CD流程中是防御SQL注入和其他类型漏洞的重要组成部分 。
渗透和模糊测试无疑是DevSecOps中的重要过程 , 并且至关重要 。 但是 , 这提出了问题 。

  • 测试检测到安全漏洞时会发生什么?
  • 当软件团队发现其大部分用户输入处理不安全时 , 会发生什么?
  • 它当然需要修复 , 但是要付出什么代价?
在开发的后期发现严重的安全问题会导致严重的成本和延迟 。 预防和检测是将安全操作进一步转移到更便宜且更容易修复的地方的关键 。
将SQL注入的检测和消除向左移动在软件开发中采用DevSecOps方法意味着将安全性集成到DevOps管道的各个方面 。 正如团队尽早在SDLC中推进代码分析和单元测试等质量流程一样 , 安全性也是如此 。
如果团队更广泛地采用这种方法 , 则SQL注入可能已成为过去 。 攻击的增加意味着它尚未发生 。 无论如何 , 让我们概述一种可以尽早防止SQL注入的方法 。
与修补(和道歉!)已发布的应用程序相比 , 查找和修复潜在的SQL注入(以及其他注入漏洞)可节省大量时间 。 单个重大事件可能使公司损失20万美元或更多 。 小型企业发生许多事件 。 一次攻击会造成严重的财务压力 , 更不用说有关违规披露和保护个人身份信息的潜在监管问题了 。
下面概述的“检测和阻止”方法基于将减轻SQL注入的风险转移到开发的最早阶段 , 并通过通过静态代码分析进行检测来增强此功能 。
如何检测SQL注入
检测SQL注入依赖于静态分析来在源代码中找到这些类型的漏洞 。 检测发生在开发人员的桌面和构建系统中 。 它可以包括现有的、旧的和第三方代码 。
连续检测安全问题可确保发现以下所有问题:
  • 开发人员错过了IDE 。
  • 存在于比您的新的检测预防方法还早的代码中 。
推荐的方法是信任但验证模型 。 安全性分析在IDE级别进行 , 开发人员在该级别上根据收到的报告做出实时决策 。 接下来 , 在构建级别进行验证 。 理想情况下 , 构建级别的目标不是找到漏洞 。 这是为了验证系统是否干净 。
例如 , 以Parasoft的演示应用程序Parabank为例 。 com.parasoft.parabank.dao.jdbc.internal中的StockDataInserter.java文件中可能存在SQL注入:
…final String sql = sb.toString();rows = (nextId - lastId) / JdbcSequenceDao.OFFSET;totalRows += rows;getJdbcTemplate().update(sql);…Parasoft JTest在生成时生成的报告如下: