通俗易懂的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 生成静态页面的办法与实现代码详细版
Feb 15 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
解析php防止form重复提交的方法
Jul 01 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
php去掉文件前几行的方法
Jul 29 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 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实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP计数器的实现代码
2013/06/08 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python文件操作整理汇总
2014/10/21 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
详解Python:面向对象编程
2019/04/10 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
厨师个人自我鉴定范文
2014/04/19 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
毕业生个人自荐书
2015/03/05 职场文书
计划生育责任书
2015/05/09 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
Nginx缓存设置案例详解
2021/09/15 Servers
服务器SVN搭建图文安装过程
2022/06/21 Servers