SQL注入攻击 - JDBC

   JDBC(Java Database Connectivity)是一套用于在 Java 程序中操作关系型数据库的 API。它提供了一种标准的 Java 方法来连接和执行 SQL 查询,从而实现与数据库的交互。

   SQL 注入是一种常见的 Web 应用程序安全漏洞,攻击者利用这种漏洞通过在输入字段中插入恶意 SQL 语句来执行非授权的数据库操作。这可能导致数据泄露、数据损坏或者完整性受损。

漏洞场景:JDBC-原生SQL语句拼接

  • 增加-add
  • 删除-delete
  • 修改-update
  • 查询-select
测试结果

                                        

缺陷代码

漏洞场景:JDBC-预编译拼接

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

缺陷代码

漏洞场景:JdbcTemplate-SQL语句拼接

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

缺陷代码

安全代码:JdbcTemplate预编译

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码

安全场景:自定义黑名单-用户输入过滤

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码

安全场景:数据类型-用户请求参数校验

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码

安全场景:Web安全框架-采用ESAPI过滤

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码

特殊场景:使用prepareStatement时,order by下的sql注入问题

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码

特殊场景:使用%和模糊查询-like

  • 增加
  • 删除
  • 修改
  • 查询
测试结果

                                        

安全代码