通俗易懂的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 相关文章推荐
如何隐藏你的.php文件
Jan 04 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
PHP7数组的底层实现示例
Aug 25 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
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
jQuery find和children方法使用
2011/01/31 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
全面了解Python环境配置及项目建立
2016/06/30 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
十岁生日父母答谢词
2014/01/18 职场文书
骨干教师考核方案
2014/05/09 职场文书
门面房租房协议书
2014/12/01 职场文书
优秀教研组申报材料
2014/12/26 职场文书
离婚案件答辩状
2015/05/22 职场文书
疾病证明书
2015/06/19 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
详解Python内置模块Collections
2022/03/22 Python