通俗易懂的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 09 PHP
php SQL防注入代码集合
Apr 25 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
php如何实现只替换一次或N次
Oct 29 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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部分常见问题总结
2008/03/27 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
js 深拷贝函数
2008/12/04 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
怎么使用pipenv管理你的python项目
2018/03/12 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python实现飞机大战小游戏
2019/11/08 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
社区母亲节活动记录
2014/03/06 职场文书
公司业务员岗位职责
2014/03/18 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP