background image

任何人都看到。 这是一个最普遍的PHP的安全问题。

所幸的是,这有两个简单的解决办法。第一,也许最好的,就是把“register_globals”

关 闭 。 二 是 你 必 须 明 确 只 有 你 使 用 变 量 。 在 上 面 的 例 子 中 , 这 将 意 味 着 加 入
“authorized=0”; 在脚本的开始:

$authorized = 0;

if ($password == “my_password”) {

$authorized = 1;

}

if ($authorized == 1) {

echo “Lots of important stuff.”;

}

错误信息

错误信息是一个非常有用的工具,无论是程序员和黑客。 开发者需要它们去改正错误。

黑客可以利用它们来找出一个网站的各种信息,从目录结构的服务器,数据库登录信息。如
果可能的话,最好是关闭所有的错误报告。 PHP可以完成这项工作。 htaccess或php.ini,
设置“error_reporting” 的值改为“0” . 如果你有一个开发环境,您可以设定不同的错
误报告级别。

SQL注入

PHP的一个最大优点就是,它可以方便地与数据库中操作,最显着的MySQL的。 很多人

使用这个数据库。不少网站,包括这一个,依赖于数据库的函数。 然而,正如你所料,有
这么大的权力你就要够面对庞大的潜在安全问题。 所幸的是,有很多解决办法。 最常见面
安全问题是一个数据库 SQL注入-当用户利用一个安全故障在你的数据库运行SQL语句。 让
我们用一个常见的例子。 许多登录系统具有以下特点:一条线,看起来象不像是在检查从
表单输入的用户名和密码, 比如去控制访问一个管理员区:

$check = mysql_query(“Select Username, Password, UserLevel FROM Users Where

Username

= ‘”.$_POST['username'].“' and Password = ’”.$_POST['password'].“‘”);

看上去很眼熟? 就表面看来,它好像做得不错。上述并不像可以做许多破坏。 但话又

说回来,我在“username” 输入框输入这样的值并提交: