通俗易懂的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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
PHP中的正则表达式实例详解
Apr 25 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
PHP+redis实现微博的推模型案例分析
Jul 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闭包函数详解
2016/02/13 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python实现二分查找与bisect模块详解
2017/01/13 Python
详解django自定义中间件处理
2018/11/21 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
自荐信的禁忌和要点
2013/10/15 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
自我评价的范文
2014/02/02 职场文书
出纳会计岗位职责
2014/03/12 职场文书
爱我中华演讲稿
2014/05/20 职场文书
优秀团员自我评价
2015/03/10 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
趣味运动会广播稿
2015/08/19 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书