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
PHP脚本数据库功能详解(上)
Oct 09 PHP
php中支持多种编码的中文字符串截取函数!
Mar 20 PHP
关于file_get_contents返回为空或函数不可用的解决方案
Jun 24 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
PHP7 新增常量
Mar 09 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缓存类完整实例
2014/07/26 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
使用Python对MySQL数据操作
2017/04/06 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
python3 enum模块的应用实例详解
2019/08/12 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
事业单位请假制度
2014/01/13 职场文书
顶撞领导检讨书
2014/01/29 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
会员卡清退活动总结
2014/08/27 职场文书
对学校的意见和建议
2015/06/04 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
医院病假条怎么写
2015/08/17 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
推普标语口号大全
2015/12/26 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers