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 相关文章推荐
PHP的面向对象编程
Oct 09 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
laravel框架使用极光推送消息操作示例
Feb 15 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 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
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
Python argparse模块使用方法解析
2020/02/20 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
最新大学生自我评价
2013/09/24 职场文书
个人违纪检讨书
2014/09/15 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
埃及王子观后感
2015/06/16 职场文书
工商行政处罚决定书
2015/06/24 职场文书
党章学习心得体会2016
2016/01/14 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP