易截截图软件、单文件、免安装、纯绿色、仅160KB

编写安全 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 站点示例。
清单 1. 下载文件

<?php
if ($_POST['submit'] == 'Download') {
$file = $_POST['fileName'];
header("Content-Type: application/x-octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename=\"" . $file . "\";


相关文档:

LAMP(Linux+Apache+MySQL+PHP)服务器的性能优化

目前LAMP (Linux + Apache + MySQL + PHPspan style="font-family: Verdana;">) 近几年来发展迅速,已经成为Web 服务器的事实标准。LAMP这个词的由来最早始于德国杂志“c't Mag
 
azine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件虽然并不是开开始就设计为一起使 ......

PHP学习之 PHP 字符串

字符串变量用于存储并处理文本片段。
PHP 中的字符串
字符串变量用于包含字符串的值。
在本教程中,我们打算介绍几个在 PHP 中用于操作字符串的最常用的函数和运算符。
在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。
在下面,PHP 脚本把字符串 "Hello World" 赋 ......

PHP学习之 PHP 运算符


运算符用于对值进行运算.
PHP 运算符
本部分列出了在 PHP 中使用的各种运算符:
算数运算符
运算符说明例子结果
+
Addition
x=2
x+2
4
-
Subtraction
x=2
5-x
3
*
Multiplication
x=4
x*5
20
/
Division
15/5
5/2
3
2.5
%
Modulus (division remainder)
5%2
10%8
10%2
1
2
0
++
Incre ......

在 PHP 中使用命令行工具

如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具。作为一大脚本语言,PHP:
容易学习。
有许多强大的框架(比如 CakePHP 和 CodeIgniter),让您能够像 Rails 程序员一样高效。
能够与 MySQL、PostgreSQL、Microsoft® SQL Server,甚至 Oracle 通信。
能够轻松地与 JavaScript 框架集成,比 ......

7 种流行 PHP IDE 的比较

编写关于 PHP 的系列文章让我更加深刻地了解了 PHP 开发人员的世界。我和许多 PHP 程序员交谈过,最令我惊奇的是只有很少的人使用 IDE。大多数程序员使用文本编辑器,比如 Microsoft® Windows® 上的记事本、Emacs 或者 Vim。
我提到的这些文本编辑器(以及我没提到)都是很不错的 —— 我不想讨论哪个编 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号