标签:Rector

从手动搬砖到自动排雷:用Rector规则批量重构ThinkPHP遗留代码中的SQL注入与XSS漏洞

#从手动搬砖到自动排雷:用Rector规则批量重构ThinkPHP遗留代码中的SQL注入与XSS漏洞

凌晨两点四十,我还在盯着屏幕逐行翻 ThinkPHP 3.2 的老代码。grep -n "\$_GET[" 跳出来两百多处,每改完一个文件就手动跑一遍 SQLLINT。心里清楚这种修法今天顶多搞定二十个。那堆字符串拼 SQL 的写法看得人只想叹气:DB::table('user')->where("id = " . I('get.id')) 这类句子遍布全库,安全审计报告把“高危”标得通红。ThinkPHP 3.2 已于 2015 年停止维护,官方文档早就提醒升级,可业务还在跑。I('get.id') 只是框架对 $_GET 的薄封装,不过滤就进 SQL,参数一变立刻被插。最初想着手写脚本批量替换,写到一半发现情况复杂:引号嵌套、魔术方法、视图拼接样样坑。偶然搜到 Rector 这个 PHP 静态分析与重构引擎,才意识到与其造轮子不如让机器自个儿学规则。

阿牛 4
PHP
git checkout