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 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
PHP扩展开发入门教程
Feb 26 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
PHP实现简单用户登录界面
Oct 23 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
php结合飞信 免费天气预报短信
2009/05/07 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
js中document.write的那点事
2014/12/12 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
js实现点击烟花特效
2020/10/14 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
Python 流程控制实例代码
2009/09/25 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Tensorflow 实现释放内存
2020/02/03 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
行政助理岗位职责
2015/02/10 职场文书
python如何做代码性能分析
2021/04/26 Python
pandas 实现将NaN转换为None
2021/05/14 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS