tpshop防止sql注入补丁
本补丁 由 QQ 木偶人 提供
首先在 www\Application\Common\Common\function.php 文件添加一个方法
/*** 转换SQL关键字** @param unknown_type $string* @return unknown*/function strip_sql($string) {$pattern_arr = array("/\bunion\b/i","/\bselect\b/i","/\bupdate\b/i","/\bdelete\b/i","/\boutfile\b/i","/\bor\b/i","/\bchar\b/i","/\bconcat\b/i","/\btruncate\b/i","/\bdrop\b/i","/\binsert\b/i","/\brevoke\b/i","/\bgrant\b/i","/\breplace\b/i","/\balert\b/i","/\brename\b/i","/\bmaster\b/i","/\bdeclare\b/i","/\bsource\b/i","/\bload\b/i","/\bcall\b/i","/\bexec\b/i","/\bdelimiter\b/i",);$replace_arr = array('union','select','update','delete','outfile','or','char','concat','truncate','drop','insert','revoke','grant','replace','alert','rename','master','declare','source','load','call','exec','delimiter',);return is_array($string) ? array_map('strip_sql', $string) : preg_replace($pattern_arr, $replace_arr, $string);}
其次需要替换一个方法 在文件 www\Application\Common\Common\function.php 找到方法 getIP()
// 定义一个函数getIP() 客户端IP,function getIP(){if (getenv("HTTP_CLIENT_IP"))$ip = getenv("HTTP_CLIENT_IP");else if(getenv("HTTP_X_FORWARDED_FOR"))$ip = getenv("HTTP_X_FORWARDED_FOR");else if(getenv("REMOTE_ADDR"))$ip = getenv("REMOTE_ADDR");else $ip = "Unknow";return htmlspecialchars($ip);}
将以上方法替换为
// 定义一个函数getIP() 客户端IP,function getIP(){if (getenv("HTTP_CLIENT_IP"))$ip = getenv("HTTP_CLIENT_IP");else if(getenv("HTTP_X_FORWARDED_FOR"))$ip = getenv("HTTP_X_FORWARDED_FOR");else if(getenv("REMOTE_ADDR"))$ip = getenv("REMOTE_ADDR");else $ip = "Unknow";if(preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip))return $ip;elsereturn '';}
方法添加完之后, 在 www\Application\Common\Conf\config.php 文件末尾 添加一行配置
'DEFAULT_FILTER' => 'strip_sql,htmlspecialchars', // 系统默认的变量过滤机制);
然后修改一下一个php文件 目录在 www\ThinkPHP\Library\Think\Db\Driver.class.php 代码 103 行 加上一行代码

// 复制这行加到相应位置
$this->options[PDO::ATTR_EMULATE_PREPARES] = false;
修改完成后记得 清除一下缓存
旧的版本 按照上述方法加上, 在新的发布版本里面 自带已经加上.
tpshop防止sql注入补丁的更多相关文章
- destoon漏洞修复关于 $do->add($post); SQL注入修改
在阿里云漏洞提示查看发现destoon有关于mobile/guestbook.php $do->add($post); SQL注入修改 漏洞名称:Destoon SQL注入 补丁文件:/mobi ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 初探SQL注入
1.1注入语句(通过时间注入函数) 数据库名称 localhost:8080/ScriptTest/userServlet?username='union SELECT IF(SUBSTRING(cu ...
- 防止SQL注入攻击
了解了SQL注入的方法,如何能防止SQL注入?如何进一步防范SQL注入的泛滥?通过一些合理的操作和配置来降低SQL注入的危险. 使用参数化的过滤性语句 要防御SQL注入,用户的输入就绝对不能直接被嵌入 ...
- 测试常用SQL注入语句大全
转载自Cracer,标题:<渗透常用SQL注入语句大全>,链接http://www.xxxx.com/?p=2226 1.判断有无注入点 整形参数判断 1.直接加' 2.and 1=1 3 ...
- DEDECMS 5.7之前版本远程SQL注入漏洞
2012/4/29 凌晨 知道创宇安全研究团队截获到最新DEDECMS SQL注入 0day,官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用简单且ded ...
- 最新 DEDECMS SQL 注入 0day
4月29日消息:国内安全研究团队“知道创宇”称截获到最新DEDECMS SQL注入0day,DEDECMS官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用 ...
- SQL注入攻击
SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候, ...
- 深入理解SQL注入绕过WAF与过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
随机推荐
- angular学习笔记(三十)-指令(1)-概述
之前在 angular学习笔记(十九)-指令修改dom 里面已经简单的提到了angular中的指令,现在来详细的介绍 '指令' 一.指令的创建: dirAppModule.directive('dir ...
- (原创)C++11改进我们的程序之简化我们的程序(八)
本次要讲的是如何通过泛型函数来简化我们的程序. 泛型函数除了之前介绍的一些优点外还有两个重要的优点 1.消除重复逻辑,提高程序的内聚性和健壮性 泛型函数在某种程度上用来弥补泛型类型的不足.通过泛型类型 ...
- 用ubuntu的grpb2引导Remix OS或Phoenix OS
Remix OS游戏版,这里下载:http://youxi.jide.com/ 安装简单.我这里要解决的是安装后用ubunu的grub2菜单去引导它. 方法如下: 进入ubuntu系统里修改其grub ...
- 系统清理工具CCleaner被植入后门
概述 2017年9月18日,有情报披露,著名的系统优化工具CCleaner的某个版本被发现植入后门,大量使用该工具的用户恐将面临泄密风险.这是继Xshell后门事件后,又一起严重的软件供应链来源攻击事 ...
- maven 打包时提示 软件包 xxxxxxx 不存在
右键项目->MAVEN->Update Project Configuration然后clean相关项目再打包如果还不行 在你关联包的路径下 把所有文件删掉 在打包的时候会重新下载 ...
- 使用线性回归识别sklearn中的手写数字digit
从昨天晚上,到今天上午12点半左右吧,一直在调这个代码.最开始训练的时候,老是说loss:nan 查了资料,因为是如果损失函数使用交叉熵,如果预测值为0或负数,求log的时候会出错.需要对预测结果进行 ...
- IP段对应表
IP段对应表 IP总数 子网掩码 C段个数 /30 4 255.255.255.252 1/64 /29 8 255.255.255.248 1/32 /28 16 255.255.255.240 ...
- [转]oracle存储过程中update不成功的一个原因
原文地址:http://lin49940.iteye.com/blog/466626 今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会 ...
- 【转】oracle CONNECT BY PRIOR叶子节点查找根节点
SELECT TRANS_ID FROM TRANS_INST WHERE connect_by_isleaf=1 START WITH TRANS_ID =480242 CONNECT BY PRI ...
- git学习(六):git stash
对于更改操作的处理 使用git status命令可以看到当前工作区的状态: git status // 查看工作区的状态 // 对于已经git add工作区中文件 git reset HEAD < ...