
标题、正文和文件名属于数据,不能未经处理直接拼进Shell命令字符串。优先用参数数组或标准输入传递,让运行工具区分命令与内容;JSON编码本身不是Shell转义,双引号也不保证所有字符都失去特殊意义。
识别从内容进入命令的边界
Excel、JSON、远程接口或用户输入都可能包含引号、换行和特殊符号,即使来源没有恶意也会破坏拼接语法。先检查脚本在哪一步把数据连接成命令,不通过删掉标题中的正常标点来回避根本问题。
优先调用不经Shell解析的接口
例如Python的subprocess可直接接收参数序列,默认不隐式调用Shell;具体平台及可执行文件仍需核对。只为方便复制命令就启用shell=True,会重新引入转义责任。不要把JSON字符串输出当成可以直接安全执行的Shell片段。

长正文采用清楚的数据通道
按WP-CLI子命令支持方式使用文件或标准输入,避免把整篇文章塞入多层引号。执行文件路径和参数也要独立处理,不能假设文件名不含空格。输入格式、编码和目标字段需明确,防止安全传参后内容仍被错误解析。
用无害特殊字符样本回归
测试引号、反引号、美元符号、换行与中文,核对保存后的字节或文本含义,不运行危险示例。检查日志不泄露敏感正文或凭据。最终同时验证脚本没有发生意外命令行为,文章内容也未被截断、替换或丢失标点。
关键区别

内容数据:标题正文及文件名;不应作为命令语法。
参数数组:区分程序与参数;平台行为仍需核对。
JSON编码:表达结构化数据;不是Shell安全转义。
怎样确认处理到位
无害特殊字符样本原意完整保存,没有意外命令执行,长内容未截断,文件路径可用,日志未泄露敏感输入。
容易误判的边界
不同操作系统和批处理程序存在例外;本文不提供可执行攻击示例,也不把某一种引号规则宣称为跨平台万能方案。
