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 相关文章推荐
封装一个PDO数据库操作类代码
Sep 09 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
php调用c接口无错版介绍
Mar 11 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
php实现的http请求封装示例
Nov 08 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 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
php中stream(流)的用法
2014/03/25 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
详解python中的异常捕获
2020/12/15 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
医学生自我评价
2014/01/27 职场文书
学习退步检讨书
2014/09/28 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
六五普法学习心得体会
2016/01/21 职场文书