输入值/表单提交参数过滤有效防止sql注入的方法


Posted in PHP onDecember 25, 2013

输入值/表单提交参数过滤,防止sql注入或非法攻击的方法:

/** 
* 过滤sql与php文件操作的关键字 
* @param string $string 
* @return string 
* @author zyb <zyb_icanplay@163.com> 
*/ 
private function filter_keyword( $string ) { 
$keyword = 'select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'; 
$arr = explode( '|', $keyword ); 
$result = str_ireplace( $arr, '', $string ); 
return $result; 
} /** 
* 检查输入的数字是否合法,合法返回对应id,否则返回false 
* @param integer $id 
* @return mixed 
* @author zyb <zyb_icanplay@163.com> 
*/ 
protected function check_id( $id ) { 
$result = false; 
if ( $id !== '' && !is_null( $id ) ) { 
$var = $this->filter_keyword( $id ); // 过滤sql与php文件操作的关键字 
if ( $var !== '' && !is_null( $var ) && is_numeric( $var ) ) { 
$result = intval( $var ); 
} 
} 
return $result; 
} 
/** 
* 检查输入的字符是否合法,合法返回对应id,否则返回false 
* @param string $string 
* @return mixed 
* @author zyb <zyb_icanplay@163.com> 
*/ 
protected function check_str( $string ) { 
$result = false; 
$var = $this->filter_keyword( $string ); // 过滤sql与php文件操作的关键字 
if ( !empty( $var ) ) { 
if ( !get_magic_quotes_gpc() ) { // 判断magic_quotes_gpc是否为打开 
$var = addslashes( $string ); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 
} 
//$var = str_replace( "_", "\_", $var ); // 把 '_'过滤掉 
$var = str_replace( "%", "\%", $var ); // 把 '%'过滤掉 
$var = nl2br( $var ); // 回车转换 
$var = htmlspecialchars( $var ); // html标记转换 
$result = $var; 
} 
return $result; 
}
PHP 相关文章推荐
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
zend framework文件上传功能实例代码
Dec 25 #PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 #PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 #PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 #PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 #PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 #PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 #PHP
You might like
php循环输出数据库内容的代码
2008/05/24 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python中itertools模块用法详解
2014/09/25 Python
python字符串替换的2种方法
2014/11/30 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
python开发前景如何
2020/06/11 Python
如何让python的运行速度得到提升
2020/07/08 Python
Django REST 异常处理详解
2020/07/15 Python
Etam德国:内衣精品店
2019/08/25 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
心灵捕手观后感
2015/06/02 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书