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 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
PHP类的封装与继承详解
Sep 29 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP微信支付开发实例
Jun 22 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php格式化时间戳
Dec 17 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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中对数据库操作的封装
2006/10/09 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python实现图书借阅系统
2019/02/20 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
如何使用Python调整图像大小
2020/09/26 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
美术国培研修感言
2014/02/12 职场文书
大气污染防治方案
2014/05/19 职场文书
个人整改措施书面材料
2014/10/24 职场文书
开展警示教育活动总结
2015/05/09 职场文书
小学英语新课改心得体会
2016/01/22 职场文书