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 socket方式提交的post详解
Jul 19 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
Yii多表联合查询操作详解
Jun 02 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 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计算数组不为空元素个数的方法
2014/01/27 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
平面设计的岗位职责
2013/11/08 职场文书
总经理司机岗位职责
2014/02/06 职场文书
护士进修自我鉴定
2014/02/07 职场文书
表彰大会策划方案
2014/05/13 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
介绍信的写法
2015/01/31 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis