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 相关文章推荐
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
php的单例模式及应用场景详解
Feb 27 PHP
PHP之header函数详解
Mar 02 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
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
高中校园广播稿
2014/01/11 职场文书
英文请假条
2014/04/11 职场文书
医学求职信
2014/05/28 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
离婚起诉书范本
2015/05/18 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android