接口测试-- 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. 安全开发必须用预编译 / #{} 防止注入
相关推荐
anxiao_m8 小时前
工业桌面云怎么选?从算力、适配、安全多维度实测对比
数据库·云桌面·云桌面厂家
qq_349447958 小时前
搭建mysql主从数据库
数据库·mysql
白帽黑客-晨哥8 小时前
Copilot 能换成本地吗?本地化 AI 编程助手完全指南
数据库·人工智能·copilot
AlfredZhao8 小时前
SH 中文化样例数据使用手册
oracle·sh
l1t10 小时前
DeepSeek 4.1总结的Tom Lane 谈塑造 Postgres 三十年历程的架构决策
开发语言·数据库·postgresql·架构
星云API|微信接口开发11 小时前
企业微信二次开发实战笔记:如何用在线调试快速验证接口功能
数据库·笔记·企业微信
隔窗听雨眠17 小时前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
samson_www18 小时前
Oracle数据泵拷贝表空间
数据库·dba
呆萌很18 小时前
MySQL 8.4 LTS 完整安装教程
数据库·mysql
sunflower#18 小时前
Go学习第五阶段:接口、泛型与包设计,实现可替换的通讯录存储层
学习·oracle·golang