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 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
Php-Redis安装测试笔记
Mar 05 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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遍历数组的方法汇总分析
2013/06/08 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
一看就懂得Python的math模块
2018/10/21 Python
python实现石头剪刀布程序
2021/01/20 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python3 xpath和requests应用详解
2020/03/06 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
大学生个人学习总结
2015/02/15 职场文书
离婚被告代理词
2015/05/23 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
遗愿清单观后感
2015/06/09 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL