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语法(4)
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php中array_column函数简单实现方法
Jul 11 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 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
ini_set的用法介绍
2014/01/07 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
Vue组件开发初探
2017/02/14 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
对python中list的五种查找方法说明
2020/07/13 Python
Python如何给你的程序做性能测试
2020/07/29 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
个人自我鉴定
2013/11/07 职场文书
电气自动化求职信
2014/06/24 职场文书
安全先进班组材料
2014/12/26 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
新兵入伍决心书
2015/09/22 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python