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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
逐步提升php框架的性能
Jan 10 PHP
php之Memcache学习笔记
Jun 17 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
php商品对比功能代码分享
Sep 24 PHP
初识PHP中的Swoole
Apr 05 PHP
PHP实现添加购物车功能
Mar 06 PHP
PHP中递归的实现实例详解
Nov 14 PHP
php报错502badgateway解决方法
Oct 11 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+DBM的同学录程序(2)
2006/10/09 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
Python实现telnet服务器的方法
2015/07/10 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python发送告警邮件脚本
2018/09/17 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
Python如何解除一个装饰器
2020/08/07 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
化工机械应届生求职信
2013/11/04 职场文书
转预备党员政审材料
2014/02/06 职场文书
公司副总经理任命书
2014/06/05 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2014年体育工作总结
2014/11/24 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
欠款证明
2015/06/24 职场文书