ThinkPHP防范XSS跨站攻击方法介绍

作者:袖梨 2022-06-25

如下的例子,在服务器上有如下代码:

 代码如下 复制代码

index.php?s=1%3Cbody+onload=alert(1)%3E

article.php?title=


其中m的值是一个不存在的module,同时是一个完全的script,在异常错误页面中被执行实现XSS跨站攻击。

防范方法

找到异常错误页面模板ThinkException.tpl.php(2,x),think_exception.tpl(3.x)有两个地方要修改:

 代码如下 复制代码

第57行 echo($_SERVER['PHP_SELF'])
改为 echo strip_tags($_SERVER['PHP_SELF'])
第62行 echo $e['message']
改为 echo strip_tags($e['message'])

另外,马上要发布的3.0官方已经对TP变量GROUP_NAME,MODULE_NAME,ACTION_NAME,__URL__,__SELF__,__APP__,$_SERVER['PHP_SELF']做了安全处理

ThinkPhp官方建义

XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案:
直接过滤所有的JavaScript脚本;
转义Html元字符,使用htmlentities、htmlspecialchars等函数;
系统的扩展函数库提供了XSS安全过滤的remove_xss方法;
新版对URL访问的一些系统变量已经做了XSS处理。

相关文章

精彩推荐