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 相关文章推荐
PHP操作XML作为数据库的类
Dec 19 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 05 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
再谈javascript原型继承
2014/11/10 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
如何理解python对象
2020/06/21 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
简历的自我评价
2014/02/03 职场文书
植树节活动总结
2014/04/30 职场文书
2014年民警工作总结
2014/11/25 职场文书
党员年度个人总结
2015/02/14 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript