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.MVC的模板标签系统(二)
Sep 05 PHP
php 数学运算验证码实现代码
Oct 11 PHP
PHP 加密解密内部算法
Apr 22 PHP
PHP include_path设置技巧分享
Jul 03 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php实现的通用图片处理类
Mar 24 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP几个实用自定义函数小结
Jan 25 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
js格式化时间小结
2014/11/03 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Django发送html邮件的方法
2015/05/26 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Django框架请求生命周期实现原理
2020/11/13 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
EJB实例的生命周期
2016/10/28 面试题
出纳岗位职责模板
2013/11/27 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
2014年妇女工作总结
2014/12/06 职场文书
公司股份合作协议书
2014/12/07 职场文书
身份证丢失证明
2015/06/19 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
MySQL令人咋舌的隐式转换
2021/04/05 MySQL