ThinkPHP2.x防范XSS跨站攻击的方法


Posted in PHP onSeptember 25, 2015

本文实例讲述了ThinkPHP2.x防范XSS跨站攻击的方法。分享给大家供大家参考。具体如下:

一直使用ThinkPHP2.x,通过乌云有向提交了ThinkPHP XSS攻击的bug,抽时间看了一下。

原理是通过URL传入script标签,ThinkPHP异常错误页面直接输出了script。

原理:

http://ask.lenovo.com.cn/index.php?s=1%3Cbody+onload=alert(1)%3E

其中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'])

另外,ThinkPHP自3.0开始官方已经对TP变量GROUP_NAME,MODULE_NAME,ACTION_NAME,__URL__,__SELF__,__APP__,$_SERVER['PHP_SELF']做了安全处理。

PS:安全不是框架的责任,大家在开发的时候须自己注意。

希望本文所述对大家基于ThinkPHP框架的php程序设计有所帮助。

PHP 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
三种php连接access数据库方法
Nov 11 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
Mar 21 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 #PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 #PHP
PHP生成随机字符串(3种方法)
Sep 25 #PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 #PHP
十个PHP高级应用技巧果断收藏
Sep 25 #PHP
PHP中的Session对象如何使用
Sep 25 #PHP
如何解决PHP无法实现多线程的问题
Sep 25 #PHP
You might like
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
php中文字母数字验证码实现代码
2008/04/25 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python中操作MySQL入门实例
2015/02/08 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python redis存入字典序列化存储教程
2020/07/16 Python
简述 Python 的类和对象
2020/08/21 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
领导证婚人证婚词
2014/01/13 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
2014年保育员工作总结
2014/12/02 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书