discuz的php防止sql注入函数


Posted in PHP onJanuary 17, 2011

最近在做一个主题投票网站,客户懂一些程序方面的东西。有特别要求需要过滤一些字符防止sql注入。本来这方面就没有特别的研究过。呵呵,又发扬了一回拿来主义。把discuz论坛的sql防注入函数取了来!

$magic_quotes_gpc = get_magic_quotes_gpc(); 
@extract(daddslashes($_COOKIE)); 
@extract(daddslashes($_POST)); 
@extract(daddslashes($_GET)); 
if(!$magic_quotes_gpc) { 
$_FILES = daddslashes($_FILES); 
} 
function daddslashes($string, $force = 0) { 
if(!$GLOBALS['magic_quotes_gpc'] || $force) { 
if(is_array($string)) { 
foreach($string as $key => $val) { 
$string[$key] = daddslashes($val, $force); 
} 
} else { 
$string = addslashes($string); 
} 
} 
return $string; 
}

大家可以增强下面的代码加以保护服务器的安全,PHP防止SQL注入安全函数十分重要!
/* 
函数名称:inject_check() 
函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全 
参数:$sql_str: 提交的变量 
返 回 值:返回检测结果,ture or false 
*/ 
function inject_check($sql_str) { 
return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤 
} 
/* 
函数名称:verify_id() 
函数作用:校验提交的ID类值是否合法 
参
数:$id: 提交的ID值 
返 回 值:返回处理后的ID 
*/ 
function verify_id($id=null) { 
if (!$id) { exit('没有提交参数!'); } // 是否为空判断 
elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断 
elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断 
$id = intval($id); // 整型化 
return $id; 
} 
/* 
函数名称:str_check() 
函数作用:对提交的字符串进行过滤 
参
数:$var: 要处理的字符串 
返 回 值:返回过滤后的字符串 
*/ 
function str_check( $str ) { 
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否打开 
$str = addslashes($str); // 进行过滤 
} 
$str = str_replace("_", "\_", $str); // 把 '_'过滤掉 
$str = str_replace("%", "\%", $str); // 把 '%'过滤掉 
return $str; 
} 
/* 
函数名称:post_check() 
函数作用:对提交的编辑内容进行处理 
参
数:$post: 要提交的内容 
返 回 值:$post: 返回过滤后的内容 
*/ 
function post_check($post) { 
if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开 
$post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 
} 
$post = str_replace("_", "\_", $post); // 把 '_'过滤掉 
$post = str_replace("%", "\%", $post); // 把 '%'过滤掉 
$post = nl2br($post); // 回车转换 
$post = htmlspecialchars($post); // html标记转换 
return $post; 
}
PHP 相关文章推荐
cmd下运行php脚本
Nov 25 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
PHP输出时间差函数代码
Jan 28 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
linux下安装php的memcached客户端
Aug 03 PHP
php curl 上传文件代码实例
Apr 27 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 PHP
Yii支持多域名cors原理的实现
Dec 05 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 #PHP
php短域名转换为实际域名函数
Jan 17 #PHP
PHP学习笔记之三 数据库基本操作
Jan 17 #PHP
PHP学习笔记之二
Jan 17 #PHP
PHP学习笔记之一
Jan 17 #PHP
php下连接mssql2005的代码
Jan 17 #PHP
Php Image Resize图片大小调整的函数代码
Jan 17 #PHP
You might like
第二节--PHP5 的对象模型
2006/11/16 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python求crc32值的方法
2014/10/05 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python class的继承方法代码实例
2020/02/14 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
医学生实习自荐信
2013/10/01 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
项目投资合作意向书
2014/07/29 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
财务检查整改报告
2014/11/06 职场文书