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 相关文章推荐
一个显示天气预报的程序
Oct 09 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
php分页函数完整实例代码
Sep 22 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 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与ASP
2006/10/09 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
prototype Element学习笔记(篇一)
2008/10/26 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Python处理JSON数据并生成条形图
2016/08/05 Python
Python线程指南详细介绍
2017/01/05 Python
Python实现单词翻译功能
2017/06/06 Python
python验证码识别的示例代码
2017/09/21 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Python request操作步骤及代码实例
2020/04/13 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
python中doctest库实例用法
2020/12/31 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
幼儿园家长评语
2014/02/10 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
2014年民警工作总结
2014/11/25 职场文书
2015年环保局工作总结
2015/05/22 职场文书