通俗易懂的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加密扩展库Mcrypt安装和实例
Nov 10 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
php 数组随机取值的简单实例
May 23 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
laravel 创建命令行命令的图文教程
Oct 23 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/05/10 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
python实现kmp算法的实例代码
2019/04/03 Python
python requests使用socks5的例子
2019/07/25 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
解决Python对齐文本字符串问题
2019/08/28 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
python getopt模块使用实例解析
2019/12/18 Python
经理助理岗位职责
2014/03/05 职场文书
学校对教师的评语
2014/04/28 职场文书
2014年安全生产责任书
2014/07/22 职场文书
售票员岗位职责
2015/02/15 职场文书
客户付款通知书
2015/04/23 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
MySQL数据库简介与基本操作
2022/05/30 MySQL