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在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
php实现文件上传基本验证
Mar 04 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如何调用webservice应用介绍
2012/11/24 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
jQuery.extend 函数详解
2012/02/03 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
JavaScript 数组详解
2013/10/10 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
javascript实现文字跑马灯效果
2020/06/18 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
python3抓取中文网页的方法
2015/07/28 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python函数基本使用原理详解
2020/03/19 Python
linux面试题参考答案(7)
2012/10/29 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
初入社会应届生求职信
2013/11/18 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
小学同学聚会感言
2015/07/30 职场文书
户外拓展训练感想
2015/08/07 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL