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 连接mssql数据库 初学php笔记
Mar 01 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
php图片缩放实现方法
Feb 20 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
php注册登录系统简化版
Dec 28 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php实现的mongodb操作类
2015/05/28 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
postman传递当前时间戳实例详解
2019/09/14 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
护士毕业自我鉴定
2014/02/07 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
委托书如何写
2014/08/30 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
nginx配置限速限流基于内置模块
2022/05/02 Servers