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 替换模板变量实现步骤
Aug 24 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
php 获取本地IP代码
Jun 23 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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
MYSQL环境变量设置方法
2007/01/15 PHP
解析php入库和出库
2013/06/25 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
一些Python中的二维数组的操作方法
2015/05/02 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
档案室主任岗位职责
2014/02/12 职场文书
博士生求职信
2014/07/06 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
Python竟然能剪辑视频
2021/05/25 Python
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Python集合的基础操作
2021/11/01 Python