php简单实现sql防注入的方法


Posted in PHP onApril 22, 2016

本文实例讲述了php简单实现sql防注入的方法。分享给大家供大家参考,具体如下:

这里没有太多的过滤,主要是针对php和mysql的组合。

一般性的防注入,只要使用php的 addslashes 函数就可以了。

以下是一段copy来的代码:

PHP代码:

$_POST = sql_injection($_POST);
$_GET = sql_injection($_GET);
function sql_injection($content)
{
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=>$value) {
$content[$key] = addslashes($value);
}
} else {
addslashes($content);
}
}
return $content;
}

做系统的话,可以用下面的代码,也是copy来的。

PHP代码:

function inject_check($sql_str) {
 return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);  // 进行过滤
}
function verify_id($id=null) {
 if (!$id) { exit('没有提交参数!'); }  // 是否为空判断
 elseif (inject_check($id)) { exit('提交的参数非法!'); }  // 注射判断
 elseif (!is_numeric($id)) { exit('提交的参数非法!'); }  // 数字判断
 $id = intval($id);  // 整型化
 return $id;
}
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;
}
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 相关文章推荐
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php读取csv文件并输出的方法
Mar 14 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
js代码实现微博导航栏
Jul 30 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
PHP简单获取及判断提交来源的方法
Apr 22 #PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 #PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 #PHP
利用php输出不同的心形图案
Apr 22 #PHP
php生成酷炫的四个字符验证码
Apr 22 #PHP
ThinkPHP连接Oracle数据库
Apr 22 #PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 #PHP
You might like
PHP 翻页 实例代码
2009/08/07 PHP
php array的学习笔记
2012/05/16 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
高二英语教学反思
2014/01/19 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
2014年督导工作总结
2014/11/19 职场文书
学习nginx基础知识
2021/09/04 Servers
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS