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
php 无限级数据JSON格式及JS解析
Jul 17 PHP
php引用返回与取消引用的详解
Jun 08 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
CI框架常用函数封装实例
Nov 21 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
laravel migrate初学常见错误的解决方法
Oct 11 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
生成卡号php代码
2008/04/09 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
python实现定时播放mp3
2015/03/29 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
经理任命书模板
2014/06/06 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
火箭队口号
2014/06/18 职场文书
森林防火标语
2014/06/23 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android