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(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
PHP输入流php://input介绍
Sep 18 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
深入分析PHP引用(&)
Sep 04 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
php查询whois信息的方法
Jun 08 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
laravel config文件配置全局变量的例子
Oct 13 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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 友好URL的实现(吐血推荐)
2008/10/04 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python内存管理分析
2015/04/08 Python
python定时执行指定函数的方法
2015/05/27 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python上下文管理器全实例详解
2019/11/12 Python
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
企业总经理职责
2014/02/02 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
个人收入证明范本
2015/06/12 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP