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 相关文章推荐
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
php实现邮件发送并带有附件
Jan 24 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
迁移PHP版本到PHP7
Feb 06 PHP
php数组转成json格式的方法
Mar 09 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
php 函数使用可变数量的参数方法
May 02 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 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静态文件生成类实例分析
2015/01/03 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
vue.js学习之UI组件开发教程
2017/07/03 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
python多进程间通信代码实例
2019/09/30 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
美术专业个人自我评价
2014/01/18 职场文书
创建文明学校实施方案
2014/03/11 职场文书
幼儿园家长寄语
2014/04/02 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
银行委托书范本
2014/09/28 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
师德师风培训感言
2015/08/03 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery