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的单引号和双引号 字符串效率
May 27 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
php简单smarty入门程序实例
Jun 11 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
Thinkphp单字母函数使用指南
May 08 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python解惑之整数比较详解
2017/04/24 Python
python使用super()出现错误解决办法
2017/08/14 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
房地产项目策划书
2014/02/05 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书