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 相关文章推荐
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
php7 新增功能实例总结
May 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python opencv读mp4视频的实例
2018/12/07 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
25道Java面试题集合
2013/05/21 面试题
预备党员思想汇报范文
2014/01/11 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
节水宣传标语口号
2015/12/26 职场文书
python入门之算法学习
2021/04/22 Python
Python办公自动化PPT批量转换操作
2021/09/15 Python
Golang map映射的用法
2022/04/22 Golang