php 应用程序安全防范技术研究


Posted in PHP onSeptember 25, 2009

PHP安全防范程序模型

/* PHP防注入跨站V1.0 

在您的页面顶部添加: require(“menzhi_injection.php”); 

即可实现通用防止SQL注入,以及XSS跨站漏洞。 

##################缺陷以及改进################## 

程序还有很多缺陷,希望大家能帮助改进 

##################参考以及鸣谢################## 

Neeao'ASP SQL通用防注入程序 V3.0 

部分代码参考自Discuz! 

*/ 

error_reporting(0); 

define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); 

$menzhi_injection="'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|or|char|declare"; 

$menzhi_injection = explode("|",$menzhi_injection); 

foreach(array('_GET', '_POST', '_COOKIE','_REQUEST') as $_request) { 

foreach($$_request as $_key => $_value) { 

//$_value = strtolower($_value); 

$_key{0} != '_' && $$_key = daddslashes($_value); 

foreach($menzhi_injection as $kill_key => $kill_value) { 

if(substr_count($_value,$kill_value)>0) { 

echo ""; 

unset($_value); 

exit(); 

} 

} 

//echo " 

".$_value; 

} 

} 

function daddslashes($string) { 

if(!MAGIC_QUOTES_GPC) { 

if(is_array($string)) { 

foreach($string as $key => $val) { 

$string[$key] = daddslashes($val); 

} 

} else { 

$string = addslashes($string); 

} 

} 

$string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1',str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); 

return $string; 

} 

?>

使用说明

在您的页面顶部添加:“require(“menzhi_injection.php”);” , 即可实现通用防止SQL注入,以及XSS跨站漏洞。调用本程序,我们使用require() 而不使用include() ,因为require()调用文件如果出错,将终止程序运行,include()并不理会。并且require()调用文件时,程序一运行,会先调用外本文件。而inculde()则是运行到该行时才开始执行。基于函数特性,我们选择require()。 您还可以根据实际需要自行增加或者删除$menzhi_injection变量中的过滤字符,来达到更好的防御效果。 再者您可以自行修改代码,或许会有有意外收获。普通注射都可以防御,以下测试仅供调侃,下面是对一句话木马的测试效果:


php 应用程序安全防范技术研究

嘿嘿,动心了就在您的页面顶部调用吧。记住是“require(“menzhi_injection.php”);”哦。这只是提起大家兴趣的噱头,请自行测试吧。

缺陷以及待改进

由于此程序只是外部调用,只是处理了外部提交的变量,并没有对您的应用程序作系统分析,所以存在很多局限性,请谨慎使用。 对于使用GBK编码的程序,还存在双字节编码漏洞风险,本程序虽然可以处理该漏洞。但遏制这些漏洞,还是需要从根源做起。需要处理数据库连接文件,我们可以添加 character_set_client=binary 。Discuz!7.0的数据库连接类db_mysql.class.php写的就非常不错,大家可以参考借鉴。当然这些并不是这个小程序所能涉及到的范畴。

而且此程序并没有过滤 $_SERVER $_ENV $_FILES系统变量。比如对于$_SERVER['HTTP_X_FORWARDED_FOR']系统获取IP时,黑客可以通过劫持修改HTTP原始请求包来更改其值,本程序是可以处理这些漏洞。但是作为程序员我们需要的是从根源就对外部变量处理,防患于未然,未雨绸缪吧。

程序很潦草,欢迎大家测试使用,有什么意见建议直接联系我吧。

结束语

最后祝大家学习有成,工作顺利,向所有辛勤工作的PHPers致敬。

PHP 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
计数器详细设计
Oct 09 PHP
php目录管理函数小结
Sep 10 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
php实现邮件发送并带有附件
Jan 24 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
php比较相似字符串的方法
Jun 05 PHP
php实现学生管理系统
Mar 21 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 #PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 #PHP
php 代码优化的42条建议 推荐
Sep 25 #PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 #PHP
PHP 日常开发小技巧
Sep 23 #PHP
php程序之die调试法 快速解决错误
Sep 17 #PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 #PHP
You might like
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
初识php MVC
2014/09/10 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
Python中Continue语句的用法的举例详解
2015/05/14 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python pip配置国内源的方法
2020/02/14 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
机电专业大学生职业规划书范文
2014/02/25 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
学术会议通知范文
2015/04/15 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
MySQL深分页问题解决思路
2022/12/24 MySQL