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 相关文章推荐
CURL状态码列表(详细)
Jun 27 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
php中socket的用法详解
Oct 24 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
PHP高并发和大流量解决方案整理
Dec 24 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
网页中CDATA标记的说明
2010/09/12 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
js实现二级联动简单实例
2020/01/11 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python super()函数使用及多重继承
2020/05/06 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
管理科学大学生求职信
2013/11/13 职场文书
室内趣味活动方案
2014/08/24 职场文书
师范生教育见习总结
2015/06/23 职场文书
谢师宴学生致辞
2015/07/27 职场文书
数学备课组工作总结
2015/08/12 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android