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 翻页 实例代码
Aug 07 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
php中文字符串截取方法实例总结
Sep 30 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 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
在字符串中把网址改成超级链接
2006/10/09 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
js实现自定义路由
2017/02/04 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
全面了解Python环境配置及项目建立
2016/06/30 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
django的ORM操作 增加和查询
2019/07/26 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
几个人围成一圈的问题
2013/09/26 面试题
军训感想500字
2014/02/20 职场文书
关于保护环境的建议书
2014/05/13 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
Flask response响应的具体使用
2021/07/15 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
python APScheduler执行定时任务介绍
2022/04/19 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis