输入值/表单提交参数过滤有效防止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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
php目录管理函数小结
Sep 10 PHP
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
php array的学习笔记
2012/05/10 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
django反向解析和正向解析的方式
2018/06/05 Python
python操作redis方法总结
2018/06/06 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
销售行政专员职责
2014/01/03 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
高中军训第一天感言
2014/03/06 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书