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 相关文章推荐
第九节 绑定 [9]
Oct 09 PHP
怎样在php中使用PDF文档功能
Oct 09 PHP
php巧获服务器端信息
Dec 06 PHP
一个很不错的PHP翻页类
Jun 01 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP扩展类型及安装方式解析
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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
Drupal简体中文语言包安装教程
2014/09/27 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
小程序实现留言板
2018/11/02 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
如何基于线程池提升request模块效率
2020/04/18 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
行政助理求职自荐信
2013/10/26 职场文书
后勤部长岗位职责
2013/12/14 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Redis的字符串是如何实现的
2021/10/24 Redis