通俗易懂的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下几种删除目录的方法总结
Aug 19 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
php getsiteurl()函数
Sep 05 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
php随机输出名人名言的代码
Oct 07 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
中医专业应届生求职信
2013/11/17 职场文书
党员教师工作决心书
2014/03/13 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers