PHP的5个安全措施小结


Posted in PHP onJuly 17, 2012

开发人员、数据库架构师和系统管理员在部署PHP应用程序到服务器之前都应该采取预防措施。大部分预防措施可以通过几行代码或者把应用程序设置稍作调整即可完成。

#1:管理安装脚本

如果开发人员已经安装了一套第三方应用程序的PHP脚本,该脚本用于安装整个应用程序的工作组件,并提供一个接入点。大多数第三方软件包都建议在安装后,删除该目录包含的安装脚本。但开发人员希望保留安装脚本,他们可以创建一个.htaccess文件来控制管理访问目录。

AuthType Basic

AuthName “Administrators Only”

AuthUserFile /usr/local/apache/passwd/passwords

Require valid-user

任何未经授权的用户,如果试图访问一个受保护的目录,将会看到一个提示,要求输入用户名和密码。密码必须匹配指定的“passwords”文件中的密码。

#2:头文件

在很多情况下,开发人员可以将分布在应用程序的几个脚本包含进一个脚本里。这些脚本将包含一个“include”指令,集成单个文件到原始页面的代码里。当“include”文件包含敏感信息,包括用户名、密码和数据库访问密钥时,该文件的扩展名应该命名成“.php ",而不是典型的“.inc”扩展。“.php”扩展确保php引擎将处理该文件,并防止任何未经授权的访问。

#3: MD5 vs. SHA

在某些情况下,用户最终会创建自己的用户名和密码,而站点管理员通常会对表单提交的密码加密,并保存在数据库中。在过去的几年中,开发人员会使用MD5(消息摘要算法)函数,加密成一个128位的字符串密码。今天,很多开发人员使用SHA-1(安全散列算法)函数来创建一个160位的字符串。

#4: 自动全局变量

php.ini文件中包含的设置称为“register_globals”。P服务器会根据register_globals的设置,将会为服务器变量和查询字符串自动创建全局变量。在安装第三方的软件包时,比如内容管理软件,像Joomla和Drupal,安装脚本将引导用户把register_globals设置为“关闭”。将设置改变为“关闭”可以确保未经授权的用户无法通过猜测变量名称及验证密码来访问数据。

#5: 初始化变量和值

许多开发人员都落入了实例化变量不赋值的陷阱,原因可能由于时间的限制而分心,或缺乏努力。身份验证过程中的变量,应该在用户登录程序开始前就有值。这个简单的步骤可以防止用户绕过验证程序或访问站点中某些他们没有权限的区域

PHP 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
php探针不显示内存解决方法
Sep 17 PHP
PHP生成图表pChart的示例解析
Jul 31 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 #PHP
UCenter 批量添加用户的php代码
Jul 17 #PHP
一个简单的网页密码登陆php代码
Jul 17 #PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 #PHP
php生成静态文件的多种方法分享
Jul 17 #PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 #PHP
php生成略缩图代码
Jul 16 #PHP
You might like
php堆排序实现原理与应用方法
2015/01/03 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP实现图片压缩
2020/09/09 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python加速程序运行的方法
2020/07/29 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
简约控的天堂:The Undone
2016/12/21 全球购物
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
高中生学习的自我评价
2013/12/14 职场文书
父亲追悼会答谢词
2014/01/17 职场文书
活动总结报告范文
2014/05/04 职场文书
社区工作者演讲稿
2014/05/23 职场文书
2014年度工作总结报告
2014/12/15 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书