之前fl里有smarty模版的xss自动修复功能,但一直没有php模版的支持。主要是smarty模版识别变量输出比较简单,判断是否是$打头,并且里面没有赋值之类的操作就可以了。 但PHP模版就非常麻烦了,PHP定界符之间可以写任何的PHP代码,不知道什么时候会进行输出。
之前fl里有smarty模版的xss自动修复功能,但一直没有php模版的支持。主要是smarty模版识别变量输出比较简单,判断是否是$打头,并且里面没有赋值之类的操作就可以了。
但PHP模版就非常麻烦了,PHP定界符之间可以写任何的PHP代码,不知道什么时候会进行输出。即使使用echo进行输出,echo后面也可以接很多东西,字符串、变量、表达式、函数调用等等,如:

这种情况下,之前一直没有解决这个问题的思路。如果为了这个功能去实现PHP的词法分析功能,就太麻烦了。
猛然间发现了PHP里提供了词法分析是方法,token_get_all函数(这个函数很早就有了)。
立即学习“PHP免费学习笔记(深入)”;
将PHP文本传入该函数后,就可以得到TOKEN列表。具体可以见PHP的官方文档:http://php.net/manual/en/function.token-get-all.php
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
0
有了这个方法就好办了,拿到token列表,寻找echo的TOKEN,到;或者?>结束,判断是否已经有了对应的转义方式或者标识为不转义,如果没有则加上对应的转义方式(PHP下都是使用函数来转义的)。
代码实现不是很复杂,具体见github上的项目文件:https://github.com/welefen/Fl/blob/master/src/Util/Tpl/PHP.class.php
ps: php虽然函数名和参数设计上有很多问题,但函数真实非常多。或者功能都有对应的函数
其实浏览器也可以把类似的接口暴漏给JS,这样很多工具都不用在实现一遍词法分析了。
原文地址:Fl里新增PHP模版的XSS自动修复功能, 感谢原作者分享。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号