通俗易懂的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
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
初识Laravel
Oct 30 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
Yii框架表单模型和验证用法
May 20 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php str_pad 函数使用详解
2009/01/13 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
删除重复数据的算法
2006/11/23 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
python3.6数独问题的解决
2019/01/21 Python
Python3中列表list合并的四种方法
2019/04/19 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
什么是python的必选参数
2020/06/21 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
复核员上岗演讲稿
2014/01/05 职场文书
爱晚亭导游词
2015/02/09 职场文书
小学体育课教学反思
2016/02/16 职场文书
初中语文教学反思范文
2016/03/03 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers