通俗易懂的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文本转图片自动换行的方法
Mar 13 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
Function eregi is deprecated (解决方法)
2013/06/21 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
ipad上运行python的方法步骤
2019/10/12 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
对教师的评语
2014/04/28 职场文书
学校节能减排倡议书
2014/05/16 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2016特色励志班级口号
2015/12/24 职场文书