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下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
PHP访问Google Search API的方法
Mar 05 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
php判断linux下程序问题实例
Jul 09 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
深入浅析php json 格式控制
Dec 24 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
php图片添加水印例子
Jul 20 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
使javascript也能包含文件
2006/10/26 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
国家助学金感谢信
2015/01/21 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
学校党员干部承诺书
2015/05/04 职场文书
领导欢送会主持词
2015/07/06 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书