通俗易懂的php防注入代码


Posted in PHP onApril 07, 2010

介绍两种方法吧,首先请把以下代码保存为safe.php放在网站根目录下,然后在每个php文件前加include(“/safe.php“);即可 :

php防注入代码方法一:

<?php 
//要过滤的非法字符 
$ArrFiltrate=array(”‘”,”;”,”union”); 
//出错后要跳转的url,不填则默认前一页 
$StrGoUrl=””; 
//是否存在数组中的值 
function FunStringExist($StrFiltrate,$ArrFiltrate){ 
foreach ($ArrFiltrate as $key=>$value){ 
if (eregi($value,$StrFiltrate)){ 
return true; 
} 
} 
return false; 
} 
//合并$_POST 和 $_GET 
if(function_exists(array_merge)){ 
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS); 
}else{ 
foreach($HTTP_POST_VARS as $key=>$value){ 
$ArrPostAndGet[]=$value; 
} 
foreach($HTTP_GET_VARS as $key=>$value){ 
$ArrPostAndGet[]=$value; 
} 
} 
//验证开始 
foreach($ArrPostAndGet as $key=>$value){ 
if (FunStringExist($value,$ArrFiltrate)){ 
echo “<script language=\”javascript\”>alert(\”非法字符\”);</script>”; 
if (emptyempty($StrGoUrl)){ 
echo “<script language=\”javascript\”>history.go(-1);</script>”; 
}else{ 
echo “<script language=\”javascript\”>window.location=\””.$StrGoUrl.”\”;</script>”; 
} 
exit; 
} 
} 
?>

php防注入代码方法二:
/* 过滤所有GET过来变量 */ 
foreach ($_GET as $get_key=>$get_var) 
{ 
if (is_numeric($get_var)) { 
$get[strtolower($get_key)] = get_int($get_var); 
} else { 
$get[strtolower($get_key)] = get_str($get_var); 
} 
} 
/* 过滤所有POST过来的变量 */ 
foreach ($_POST as $post_key=>$post_var) 
{ 
if (is_numeric($post_var)) { 
$post[strtolower($post_key)] = get_int($post_var); 
} else { 
$post[strtolower($post_key)] = get_str($post_var); 
} 
} 
/* 过滤函数 */ 
//整型过滤函数 
function get_int($number) 
{ 
return intval($number); 
} 
//字符串型过滤函数 
function get_str($string) 
{ 
if (!get_magic_quotes_gpc()) { 
return addslashes($string); 
} 
return $string; 
}
PHP 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
第十一节 重载 [11]
Oct 09 PHP
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
Content-type 的说明
Oct 09 PHP
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
深入php self与$this的详解
Jun 08 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
php 自定义错误日志实例详解
Nov 12 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
PHP基于进程控制函数实现多线程
Dec 09 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 #PHP
用PHP实现读取和编写XML DOM代码
Apr 07 #PHP
php session和cookie使用说明
Apr 07 #PHP
DedeCMS dede_channeltype表字段注释
Apr 07 #PHP
php抓取https的内容的代码
Apr 06 #PHP
php中几种常见安全设置详解
Apr 06 #PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 #PHP
You might like
第九节--绑定
2006/11/16 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
JavaScript 学习笔记(五)
2009/12/31 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
python 读写中文json的实例详解
2017/10/29 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Django框架models使用group by详解
2020/03/11 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
实训报告范文大全
2014/11/04 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
村官2015年度工作总结
2015/10/14 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
Go语言带缓冲的通道实现
2021/04/26 Golang
go语言中fallthrough的用法说明
2021/05/06 Golang
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL