通俗易懂的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 文件上传系统手记
Oct 26 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
php转换颜色为其反色的方法
Apr 27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
详细分析PHP7与PHP5区别
Jun 26 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绘制饼状图的实现代码
2013/06/07 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Django框架反向解析操作详解
2019/11/28 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
应用心理学个人的求职信
2013/12/08 职场文书
会计实习生自我鉴定
2013/12/12 职场文书
如何书写授权委托书?
2019/06/25 职场文书