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&MYSQL分页原理及实现
Jan 02 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
CI框架开发新浪微博登录接口源码完整版
May 28 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php实现的简单检验登陆类
Jun 18 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
php的常量和变量实例详解
Jun 27 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 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
谈一谈收音机的高放电路
2021/03/02 无线电
PHP聊天室技术
2006/10/09 PHP
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
自己的js工具 Event封装
2009/08/21 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
python实现ip查询示例
2014/03/26 Python
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
电台实习生求职信
2014/02/25 职场文书
党员评议个人总结
2014/10/20 职场文书
区域经理岗位职责
2015/02/02 职场文书
政工师工作总结2015
2015/05/26 职场文书
校运会新闻稿
2015/07/17 职场文书