接口测试-- 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. 安全开发必须用预编译 / #{} 防止注入
相关推荐
王仲肖2 小时前
PostgreSQL 冻结(Freeze)机制深度解析
数据库·postgresql
执 、2 小时前
PageHelper 插件实现分页查询
java·sql
赵渝强老师2 小时前
【赵渝强老师】Redis中的字符串
数据库·redis·nosql
天空属于哈夫克32 小时前
告别重复粘贴:如何利用 API 实现企业微信群公告自动更新
数据库·自动化·企业微信·rpa
梦想的旅途22 小时前
企业微信自动发送文本消息的实现与配置
数据库·企业微信
有味道的男人2 小时前
小红书视频比较详情API在线调用数据帮助你更快解决数据抓取
数据库·音视频
米粒12 小时前
力扣算法刷题 Day23
数据库·算法·leetcode
2401_8747325310 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
stuartevil11 小时前
【MySQL】SQL菜鸟教程(一)
sql·mysql·oracle