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 常见郁闷问题答解
Nov 25 PHP
php mysql数据库操作分页类
Jun 04 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php中autoload的用法总结
Nov 08 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php中opendir函数用法实例
Nov 15 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
Nov 27 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循环语句笔记(foreach,list)
2011/11/29 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python中logging库的使用总结
2017/10/18 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python 编码规范整理
2018/05/05 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python 文件数据读写的具体实现
2020/01/24 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
.net笔试题
2014/03/03 面试题
2014年社区植树节活动方案
2014/02/28 职场文书
青年志愿者活动方案
2014/08/17 职场文书
旷工检讨书大全
2015/08/15 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
Python基于百度API识别并提取图片中文字
2021/06/27 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python