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 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php中动态调用函数的方法
Mar 16 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
windows平台中配置nginx+php环境
Dec 06 PHP
PHP微信API接口类
Aug 22 PHP
php服务器的系统详解
Oct 12 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取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
javascript读取xml
2006/11/04 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
iview实现图片上传功能
2020/06/29 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
Python pip 常用命令汇总
2020/10/19 Python
巴西网上药房:onofre
2016/11/21 全球购物
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
社区文化建设方案
2014/05/02 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
介绍信如何写
2015/01/31 职场文书
幼师个人总结范文
2015/02/28 职场文书
酒店前台岗位职责
2015/04/16 职场文书
美丽的大脚观后感
2015/06/03 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS