接口测试-- SQL 注入测试(安全合规版)

目录

一、核心测试场景(最常用、无破坏性)

[1. 最简单的判断测试(最基础)](#1. 最简单的判断测试(最基础))

[2. 恒真测试(判断是否可绕过逻辑)](#2. 恒真测试(判断是否可绕过逻辑))

[3. 注释测试(判断是否能截断 SQL)](#3. 注释测试(判断是否能截断 SQL))

[二、常用安全测试 Payload(无破坏性合集)](#二、常用安全测试 Payload(无破坏性合集))

三、不同接口位置测试

四、安全判断标准(你可以直接用)

五、防御方法(开发必看)

总结


我会给你合法、用于安全自检的 SQL 注入测试方法 ,仅适用于你自己拥有权限的系统 / 接口,严禁用于未授权系统!

一、核心测试场景(最常用、无破坏性)

专门用于检测接口是否存在 SQL 注入漏洞,不会删库、不会破坏数据。

1. 最简单的判断测试(最基础)

在接口参数中传入:

复制代码
'

判断规则

  • 返回数据库报错 (如 You have an error in your SQL syntax)= 大概率存在注入
  • 返回正常结果 / 屏蔽报错 = 可能安全

2. 恒真测试(判断是否可绕过逻辑)

参数值:

复制代码
' OR '1'='1

作用

  • 若接口直接拼接 SQL,会变成: sql

    复制代码
    SELECT * FROM user WHERE username='' OR '1'='1'
  • 结果:返回全部数据 / 登录绕过 = 存在高危注入


3. 注释测试(判断是否能截断 SQL)

参数值:

sql 复制代码
admin' -- 
admin' # 

作用

  • 把后面的 SQL 语句注释掉,常用于登录绕过:

    sql 复制代码
    SELECT * FROM user WHERE username='admin' -- ' AND password='xxx'

二、常用安全测试 Payload(无破坏性合集)

适合GET/POST/JSON 接口参数测试:

复制代码
'
"
' OR 1=1--
" OR 1=1--
' OR '1'='1'--
admin' -- 
' UNION SELECT NULL,NULL--
' AND SLEEP(5)--  (盲注测试)

三、不同接口位置测试

  1. URL 参数

    复制代码
    https://xxx.com/api/user?id=1'
  2. POST 表单参数

    复制代码
    username=test'&password=123
  3. JSON 接口

    复制代码
    {"username":"test'","age":18}

四、安全判断标准(你可以直接用)

现象 结论
直接返回数据库错误 高风险,存在注入
输入 ' OR 1=1-- 返回全部数据 高危注入
输入 ' AND SLEEP(5)-- 延迟 5 秒响应 时间盲注漏洞
无论输入什么都正常 / 统一报错 大概率安全

五、防御方法(开发必看)

  1. 使用预编译语句(PreparedStatement)
  2. ORM 框架(MyBatis/MyBatis-Plus 用 #{} 而非 ${})
  3. 参数过滤与黑名单
  4. 关闭数据库错误回显

总结

  1. 我提供的是自检用安全测试方法,仅用于你有权限的系统
  2. 最基础测试:参数加 ' 看是否报数据库错
  3. 最有效测试:' OR '1'='1 看是否返回全部数据
  4. 安全开发必须用预编译 / #{} 防止注入
相关推荐
Highcharts.js14 小时前
Highcharts Grid 中文站正式上线:表格数据处理的全新选择
前端·javascript·数据库·表格数据·highcharts·可视化图表·企业级图表
Elastic 中国社区官方博客17 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
2301_8166602117 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
qq_3721542318 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
_下雨天.19 小时前
NoSQL之Redis配置与优化
数据库·redis·nosql
LiAo_1996_Y19 小时前
CSS如何实现文字渐变效果_通过background-clip实现艺术字
jvm·数据库·python
2401_8877245019 小时前
CSS如何让表单在手机端友好展示_利用Flexbox实现堆叠排版
jvm·数据库·python
数据库小组19 小时前
MySQL 删库后怎么恢复?binlog2sql 之外,NineData 还能做什么
数据库·sql·mysql·安全·数据·ninedata·删库
zhangchaoxies19 小时前
Layui轮播图(carousel)怎么设置自动播放间隔
jvm·数据库·python
切糕师学AI20 小时前
HBase:一文搞懂分布式宽列数据库(原理 + 架构 + 实战)
数据库·分布式·nosql·hbase·分布式宽列数据库·wide column db