编写安全PHP应用程序的七个习惯

在提及安全性问题时,需要注意,除了实际的平台和操作系统安全性问题之 外,您还需要确保编写安全的应用程序。在编写 PHP 应用程序时,请应用下面 的七个习惯以确保应用程序具有最好的安全性:

验证输入

保护 文件系统

保护数据库

保护会话数据

保护跨站点脚本( Cross-site scripting,XSS)漏洞

检验表单 post

针对跨站点 请求伪造(Cross-Site Request Forgeries,CSRF)进行保护

验证输入

在提及安全性问题时,验证数据是您可能采用的最重要的习惯。而在提 及输入时,十分简单:不要相信用户。您的用户可能十分优秀,并且大多数用户 可能完全按照期望来使用应用程序。但是,只要提供了输入的机会,也就极有可 能存在非常糟糕的输入。作为一名应用程序开发人员,您必须阻止应用程序接受 错误的输入。仔细考虑用户输入的位置及正确值将使您可以构建一个健壮、安全 的应用程序。

虽然后文将介绍文件系统与数据库交互,但是下面列出了 适用于各种验证的一般验证提示:

使用白名单中的值

始终重新 验证有限的选项

使用内置转义函数

验证正确的数据类型(如数 字)

白名单中的值(White-listed value)是正确的值,与无效的黑名 单值(Black-listed value)相对。两者之间的区别是,通常在进行验证时,可 能值的列表或范围小于无效值的列表或范围,其中许多值可能是未知值或意外值 。

在进行验证时,记住设计并验证应用程序允许使用的值通常比防止所 有未知值更容易。例如,要把字段值限定为所有数字,需要编写一个确保输入全 都是数字的例程。不要编写用于搜索非数字值并在找到非数字值时标记为无效的 例程。

保护文件系统

2000 年 7 月,一个 Web 站点泄露了保存 在 Web 服务器的文件中的客户数据。该 Web 站点的一个访问者使用 URL 查看 了包含数据的文件。虽然文件被放错了位置,但是这个例子强调了针对攻击者保 护文件系统的重要性。

如果 PHP 应用程序对文件进行了任意处理并且含 有用户可以输入的变量数据,请仔细检查用户输入以确保用户无法对文件系统执 行任何不恰当的操作。清单 1 显示了下载具有指定名的图像的 PHP 站点示例。

时间: 2024-08-07 20:19:57

编写安全PHP应用程序的七个习惯的相关文章

编写安全 PHP应用程序的七个习惯深入分析_php技巧

在提及安全性问题时,需要注意,除了实际的平台和操作系统安全性问题之外,您还需要确保编写安全的应用程序.在编写 PHP 应用程序时,请应用下面的七个习惯以确保应用程序具有最好的安全性:•验证输入•保护文件系统•保护数据库•保护会话数据•保护跨站点脚本(Cross-site scripting,XSS)漏洞•检验表单 post•针对跨站点请求伪造(Cross-Site Request Forgeries,CSRF)进行保护验证输入在提及安全性问题时,验证数据是您可能采用的最重要的习惯.而在提及输入时

编写高性能 Web 应用程序的10个技巧

web|程序|技巧|性能|技巧|性能 本文讨论:常见的 ASP.NET 性能神话 有用的 ASP.NET 性能技巧和诀窍 在 ASP.NET 中处理数据库的一些建议 缓冲以及用 ASP.NET 进行后台处理 本文使用下列技术:ASP.NET,.NET 框架,IIS 用 ASP.NET 编写 Web 应用程序其轻松程度令人难以置信.它是如此的容易,以至于许多开发人员不用花费多少时间来构筑其应用便能获得非常好的性能.在本文中,我将给出10个编写高性能 Web 应用的技巧.我的评论不仅仅局限与 ASP

Java运用SWT插件编写桌面记事本应用程序_java

本文实例介绍了Java基于SWT编写记事本的详细过程,分享给大家供大家参考,具体内容如下 可实现windows系统桌面记事本基本功能,傻瓜式教学,一步一步手把手操作.小白也可自己编写出完整的应用程序. 需要工具:Eclipse(带SWT插件) 成品如下: 应用程序功能介绍: 功能分析: 1.文件(F) 2.编辑(E) 3.格式(O) 4.查看(V) 5.帮助(H) 其中文件菜单中包括 1.1.新建(N) Ctrl+N 1.2打开(O) Ctrl+O 1.3保存(S) Ctrl+S 1.4另存为(

用VS2008编写的asp.net程序,发布时就一定要安装.net framework3.5吗?

问题描述 用VS2008编写的asp.net程序,我在应用程序的目标FRAMEWORK里选择.netframework2.0,并且没有用到.netframework3.5的技术,发布时,仍需要3.5,如果这样,目标FRAMEWORK的设置又是什么意思? 解决方案 解决方案二:可能没有用到.netframework3.5的技术,还是用到了吧.不过服务器上面多装一个框架也没有什么问题啊解决方案三:我的服务器是2000,装不了.net3.5解决方案四:艾,不支持2000绝对郁闷阿,找到同路人了解决方案

c语言-用C语言编写一个对数组排序的程序,要求使用递归算法实现。

问题描述 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 解决方案 http://blog.sina.com.cn/s/blog_70441c8e0100pxuh.html 快速排序 解决方案二: http://blog.csdn.net/meditator_hkx/article/details/49756199 快速排序采用的二分法,正是将问题化大为小,展现递归的精髓-

编写高性能 Web 应用程序的10 个技巧

web|程序|技巧|性能|技巧|性能 技巧 作者:Rob Howard 本文讨论 • 常见 ASP.NET 性能难点 • 面向 ASP.NET 的有用性能提示和技巧 • 在 ASP.NET 中使用数据库的建议 • 使用 ASP.NET 进行缓存和后台处理 本文使用了以下技术:ASP.NET..NET Framework 和 IIS 本页内容 数据层性能 技巧 1 - 返回多个结果集 技巧 2 - 分页的数据访问 技巧 3 - 连接池 技巧 4 - ASP.NET 缓存 API 技巧 5 - 每请

编写高性能Web应用程序的10个入门技巧

web|程序|技巧|性能 使用 ASP.NET 编写 Web 应用程序的简单程度令人不敢相信.正因为如此简单,所以很多开发人员就不会花时间来设计其应用程序的结构,以获得更好的性能了.在本文中,我将讲述 10 个用于编写高性能 Web 应用程序的技巧.但是我并不会将这些建议仅局限于ASP.NET 应用程序,因为这些应用程序只是 Web 应用程序的一部分.本文不作为对 Web应用程序进行性能调整的权威性指南 - 一整本书恐怕都无法轻松讲清楚这个问题.请将本文视作一个很好的起点. 成为工作狂之前,我原

Java与XML(二)用java编写xml的读写程序

xml|程序 Java与XML(二)用java编写xml的读写程序 这是读取xml文件的java程序,我调试好的.采用的是dom方式读取xml文件到Vector中.package src;import java.io.*;import java.util.Vector;import javax.xml.parsers.*;import org.w3c.dom.*;public class readxml { static Document document; private boolean va

简单的用PHP编写的导航条程序

//简单的用PHP编写的导航条程序  <?php //导航条配置说明:默认显示的是目录名 //如果不愿意使用目录名,请去掉下面一行注释,并修改数组元素 $label= array("目录1"=>"导航名1","目录2"=>"导航名2","目录3"=>"导航名3"); $ur1=$REQUEST_URI; while($ur1 != ""){