1. 系统文件名场景
不同操作系统对文件名有严格限制,目的是避免路径析错误。- Windows系统禁止的非法符:/:*?"<>|——这些符要么是路径分隔符/,要么是通配符*?,要么是特殊符号:"<>|,会干扰系统识别文件位置。
- macOS系统禁止的非法符::——它会与文件扩展名的分隔符混淆如“文档.txt”中的“.”。
2. 网页/APP表单输入场景
为防止跨站脚本攻击XSS和SQL入,表单通常拦截以下符: <script>、、'、"、or 1=1--、%、&。比如“<script>”会触发恶意脚本执行,“' or 1=1--”会篡改SQL查询逻辑如将“SELECT * FROM users WHERE name='张三'”变成“SELECT * FROM users WHERE name='张三' OR '1'='1'”,“%”“&”则可能干扰URL参数析。
3. 数据库操作场景
SQL语句中,用于符串闭合的符会破坏查询逻辑,常见非法符: '、"、;。比如在“INSERT INTO users (name) VALUES ('李四')”中,若输入“李四'); DROP TABLE users; --”,会变成“INSERT INTO users (name) VALUES ('李四'); DROP TABLE users; --'”,直接删除整个表,因此这些符会被数据库接口拦截。4. 编程语法场景
编程语言的变量名、函数名有严格命名规则,以下符通常非法: #、@、!、$、%、^、&、*、(、)、-、+、=、[、]、{、}、|、、;、:、'、"、<、>、?、/。比如Python中变量名不能以数,也不能包含“#”释符号或“@”装饰器符号;Java中变量名不能使用“$”以外的特殊符且“$”通常用于内部类。从文件名到代码变量,从表单输入到数据库查询,非法符的边界始终围绕“场景规则”展开。理这一点,就能避免因符使用不当导致的系统错误或安全问题。
