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 相关文章推荐
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
php5.3 注意事项说明
Jul 01 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
Feb 10 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php实现通用的信用卡验证类
2015/03/24 PHP
php表单处理操作
2017/11/16 PHP
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
vue中render函数的使用详解
2018/10/12 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
python远程登录代码
2008/04/29 Python
python实现井字棋游戏
2020/03/30 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
python对文件的操作方法汇总
2020/02/28 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
大学生未来职业生涯规划书
2014/02/15 职场文书
暑期研修感言
2014/02/17 职场文书
元宵晚会主持词
2014/03/25 职场文书
生物科学专业自荐书
2014/06/20 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
青春雷锋观后感
2015/06/10 职场文书
技术入股协议书
2016/03/22 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Ajax实现三级联动效果
2021/10/05 Javascript