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经典的给图片加水印程序
Dec 06 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php类的自动加载操作实例详解
Sep 28 PHP
降低PHP Redis内存占用
Mar 23 PHP
Yii框架日志操作图文与实例详解
Sep 09 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导入模块文件分享
2015/03/17 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
JS 遮照层实现代码
2010/03/31 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
python如何将图片转换为字符图片
2020/08/19 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Pyqt5实现英文学习词典
2019/06/24 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
简历中求职的个人自我评价
2013/12/03 职场文书
校园安全演讲稿
2014/05/09 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android