PHP 编程安全性小结


Posted in PHP onJanuary 08, 2010

规则 1:绝不要信任外部数据或输入

关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。

对用户输入进行清理的一个简单方法是,使用正则表达式来处理它。

规则 2:禁用那些使安全性难以实施的 PHP 设置

已经知道了不能信任用户输入,还应该知道不应该信任机器上配置 PHP 的方式。例如,要确保禁用 register_globals。如果启用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替换同名的 GET 或 POST 字符串。通过禁用这个设置,PHP 强迫您在正确的名称空间中引用正确的变量。要使用来自表单 POST 的变量,应该引用 $_POST['variable']。这样就不会将这个特定变量误会成 cookie、会话或 GET 变量。

要 检查的第二个设置是错误报告级别。在开发期间,希望获得尽可能多的错误报告,但是在交付项目时,希望将错误记录到日志文件中,而不是显示在屏幕上。为什么 呢?因为恶意的黑客会使用错误报告信息(比如 SQL 错误)来猜测应用程序正在做什么。这种侦察可以帮助黑客突破应用程序。为了堵住这个漏洞,需要编辑 php.ini 文件,为 error_log 条目提供合适的目的地,并将 display_errors 设置为 Off。

规则 3:如果不能理解它,就不能保护它

一些开发人员使用奇怪的语法,或者将语句组织得很紧凑,形成简短但是含义模糊的代码。这种方式可能效率高,但是如果您不理解代码正在做什么,那么就无法决定如何保护它。

规则 4:“纵深防御” 是新的法宝

即使使用 PHP regex 来确保 GET 变量完全是数字的,仍然可以采取措施确保 SQL 查询使用转义的用户输入。

纵深防御不只是一种好思想,它可以确保您不会陷入严重的麻烦。

PHP 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
PHP 压缩文件夹的类代码
Nov 05 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
php 不使用js实现页面跳转
Feb 11 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
Sep 30 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
CI框架常用函数封装实例
Nov 21 PHP
php提取微信账单的有效信息
Oct 01 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 #PHP
PHP5.3.1 不再支持ISAPI
Jan 08 #PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 #PHP
php实现的遍历文件夹下所有文件,编辑删除
Jan 05 #PHP
处理php自动反斜杠的函数代码
Jan 05 #PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 #PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 #PHP
You might like
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
研发工程师岗位职责
2014/04/28 职场文书
生活小常识广播稿
2014/09/16 职场文书
领导班子对照检查材料
2014/09/22 职场文书
思想品德评语大全
2014/12/31 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书