整理网络安全类的查询
正则表达式基础语法
元字符
- . – 匹配任意单个字符(除换行符)
- \\d – 匹配数字
- \\w – 匹配字母、数字、下划线
- \\s – 匹配空白字符
- ^ – 匹配字符串开始
- $ – 匹配字符串结束
量词
- * – 0次或多次
- + – 1次或多次
- ? – 0次或1次
- {n} – 恰好n次
- {n,} – 至少n次
- {n,m} – n到m次
字符类
- [abc] – 匹配a、b或c
- [a-z] – 匹配a到z的任意字符
- [^abc] – 匹配除a、b、c外的字符
分组和选择
- (abc) – 捕获分组
- (?:abc) – 非捕获分组
- a|b – 匹配a或b
网络安全类正则表达式查询表格
| 89 | 网络安全类 | 检测SQL注入攻击 | (UNION|SELECT|DROP|INSERT|DELETE|UPDATE|ALTER|EXEC)\\s+ | 检测SQL注入危险关键词 | user=1' UNION SELECT * FROM user → 检测到UNION、SELECT | 1. 需忽略大小写2. 可能误报合法SQL语句3. 无法检测编码绕过 |
| 90 | 网络安全类 | 检测XSS跨站脚本 | (<script|onclick|onload|onerror|javascript:) | 检测XSS危险标签/事件 | <script>alert(1)</script> → 检测到<script> | 1. 需忽略大小写2. 无法检测事件处理器的其他写法3. 可能被HTML实体编码绕过 |
| 91 | 网络安全类 | 扫描敏感信息泄露 | (1[3-9]\\d{9}|[1-9]\\d{5}(19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]|\\d{16,19}) | 扫描手机号、身份证、银行卡 | 手机:13800138000,身份证:11010119900307789X → 检测到敏感信息 | 1. 身份证校验位验证不完整2. 银行卡号长度范围过大3. 可能匹配到类似格式的非敏感数据 |
| 92 | 网络安全类 | 匹配暴力破解异常IP | (\\d+\\.\\d+\\.\\d+\\.\\d+)\\s+Failed password | 匹配登录失败的IP地址 | 192.168.1.1 Failed password for root → 提取IP:192.168.1.1 | 1. IP地址格式验证不严格2. 依赖特定的日志格式3. 可能匹配到非恶意失败 |
常见错误及避免方法
1. SQL注入检测的局限性
问题:当前正则表达式过于简单,容易被绕过
// 当前写法
(UNION|SELECT|DROP|INSERT|DELETE|UPDATE|ALTER|EXEC)\\s+
// 改进建议
(?i)(union\\s+select|drop\\s+table|insert\\s+into|delete\\s+from)
2. XSS检测的不足
问题:无法检测大小写变种和编码绕过
// 当前写法
(<script|onclick|onload|onerror|javascript:)
// 改进建议
(?i)(<script|onclick|onload|onerror|javascript:|&#x)
3. 敏感信息匹配的精度问题
问题:身份证和银行卡验证不够精确
// 改进的身份证验证(更精确)
[1-9]\\d{5}(19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]
// 改进的银行卡验证(更合理)
\\d{16,19}(?=\\D|$)
4. IP地址匹配的改进
问题:当前匹配可能匹配到非IP地址
// 当前写法
(\\d+\\.\\d+\\.\\d+\\.\\d+)
// 改进建议
\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b
最佳实践建议
这些正则表达式在实际应用中需要根据具体场景进行调整和优化,建议配合专业的WAF(Web应用防火墙)使用。
我用代码做了一个正则表达式查询库,可以查询100种典型应用,也可以验证和测试你的代码,可以点击直接下载:
正则表达式查询库 覆盖数据验证、文本提取/清洗、开发调试、日志分析、网络安全等数十个领域的100种正则表达式应用场景




