内容提要
作者laruence曾因PHP8引入JIT及内部结构改动,放弃维护检测XSS/SQL注入的Taint扩展。近期尝试用阿里千问Qwen-3.8-Max编程,AI耗时5小时、消耗2亿Token(花费406元)完成PHP8适配。作者审查后认为代码靠谱,已开源至GitHub,并计划定期让AI同步更新。
延伸解读
AI编程的可行性验证
作者原本认为Taint扩展适配PHP8极其复杂,涉及内部结构改动和大量Opcode劫持,几乎不可能完成。但通过阿里千问Qwen-3.8-Max,AI在5小时内完成了2000多行代码的适配,且经作者审查后认为靠谱。这验证了AI在复杂编程任务上的能力,尤其是理解大型代码库和内部实现细节的能力。
成本与效率的权衡
本次适配消耗了2亿Token,花费406元,耗时近5小时。虽然成本不低,但相比人工维护的繁琐和耗时,AI的效率和成本优势明显。作者认为后续类似项目有提升空间,且Token价格会越来越便宜,这为开发者提供了新的维护思路。
维护模式的转变
作者计划定期让AI查看PHP的Change Log,并同步调整Taint,这改变了以往需要人工监控和适配的模式。这种“AI辅助维护”的方式,可能成为开源项目维护的新常态,降低维护者的负担,让开发者更专注于创意和设计。
Q&A
Taint扩展是什么?它主要用来做什么?
Taint是一个PHP扩展,用于检测XSS、SQL注入和Shell注入等安全漏洞。当代码中直接使用来自外部输入的字符串(如$_GET、$_POST)时,它会发出警告,提示数据可能被污染。
Taint扩展的工作原理是什么?
Taint扩展通过给来自外部的字符串添加标记,并劫持可能复制这些字符串的PHP Opcode Handler,如果字符串未经过无害化处理,标记会在复制过程中持续传递,从而在危险操作时发出警告。
为什么作者laruence最初放弃维护Taint扩展?
因为PHP8引入了JIT和大量内部结构改动,原有的标记存储在GC_FLAGS中,但PHP8.0后没有可用的bit,且需要持续监控内部结构和Opcode Handler的变化,维护成本太高,因此放弃。
作者是如何让Taint支持PHP8的?
作者使用阿里千问Qwen-3.8-Max编程模型,通过AI辅助完成了Taint的PHP8适配。AI耗时约5小时,消耗2亿Token,花费406元,作者审查后认为代码靠谱,并已开源。
Taint的PHP8版本在哪里可以获取?
Taint的PHP8版本已开源在GitHub上,地址为:https://github.com/laruence/taint。
作者对AI编程能力的评价是什么?
作者认为Qwen-3.8-Max的编程能力可以满足日常项目维护需求,并强调在当今时代,想法更重要,AI可以很好地完成具体执行,且Token成本越来越低,应敢于尝试。