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 相关文章推荐
拼音码表的生成
Oct 09 PHP
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
php对关联数组循环遍历的实现方法
Mar 13 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
浅析PHP7 的垃圾回收机制
Sep 06 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图片上传程序
2008/03/27 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
Yii中表单用法实例详解
2016/01/05 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php微信开发自定义菜单
2016/08/27 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
Python函数嵌套实例
2014/09/23 Python
Python求解平方根的方法
2015/03/11 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python字典排序的方法
2019/10/12 Python
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
《忆江南》教学反思
2014/04/07 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
网络销售员岗位职责
2015/04/11 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript