常见漏洞验证121 条

命令注入修复视角

修复核心是避免经过 shell 解析:优先用语言原生 API;必须调用外部程序时以参数数组传递,并对取值做白名单校验。

首选使用语言内置库替代 shell 命令
次选参数数组形式调用(不经过 shell 拼接)
兜底对文件名/路径参数做白名单与规范化校验

调用方式对比(教学示意)

调用方式对比(教学示意)
不安全:以 shell 解释字符串(输入可携带分隔符改变命令结构)
安全:  以参数数组调用(如 ['convert', 源文件, 目标文件]),不经过 shell
黑名单过滤特殊字符不可靠(编码、通配符等写法多样),应从根本上避免拼接。

易错点

  • 只过滤输入中的符号,未改调用方式
  • 外部程序自带解析(如某些工具的命令串参数)需单独确认

数据来源与参考

  • OWASP Cheat Sheet:OS Command Injection Defense
  • CWE-78
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌