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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
php与paypal整合方法
Nov 28 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
php中fsockopen用法实例
Jan 05 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
浅谈PHP7中的一些小技巧
May 29 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
用javascript实现画板的代码
2007/09/05 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
基于python 凸包问题的解决
2020/04/16 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
环境科学毕业生自荐信
2013/11/21 职场文书
企业演讲稿范文
2013/12/28 职场文书
党员岗位承诺书
2014/03/25 职场文书
小学生环保演讲稿
2014/04/25 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
教师师德表现自我评价
2015/03/05 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS