输入值/表单提交参数过滤有效防止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中支持多种编码的中文字符串截取函数!
Mar 20 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
php代码书写习惯优化小结
Jun 20 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
浅谈PHP封装CURL
Mar 06 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
JS交换变量的方法
2015/01/21 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
webpack优化的深入理解
2018/12/10 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
python实现360的字符显示界面
2014/02/21 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
如何利用python进行时间序列分析
2020/08/04 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
国际领先的学术出版商:Springer
2017/01/11 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
高级方案规划工程师岗位职责
2013/11/29 职场文书
高中自我评价分享
2013/12/05 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
员工合理化建议书
2014/05/19 职场文书
党员十八大心得体会
2014/09/12 职场文书
导游词之镇江焦山
2019/11/21 职场文书