1

所以我正在为我的网站构建一个 GUI 管理区域。我将是唯一一个登录的人,它只会显示来自我的数据库的干净(可打印)信息布局。

这就是我为安全所做的事情。让我知道您是否认为这很好以及我可以如何改进。

  1. 所有页面上的标题检查admin == true或死/重定向
  2. 因为我家里有一个专用IP,所以我只会在家登录。我制作了所有页面,包括登录表单页面检查我的 IP $_SERVER['REMOTE_ADDR'];!= 标头重定向
  3. 我的登录脚本在文件夹权限中dir设置700
  4. 我的登录名和密码总共包含 10 个字母、数字和特殊字符的组合。PW 存储为 SHA2 HASH
  5. 我的登录脚本检查regex之前sql和我的凭据存储在单独的管理表中
  6. 整个网站都在 SSL 上。

那么这安全吗?我可以做更多吗?这是矫枉过正吗?请分享您的意见和建议(尤其是关于我的 IP 检查。可以绕过吗?)

用于转义不良数据 - 与regex每个字段一起使用

function escape_data ($data) {
    if (function_exists(‘mysql_real_escape_string’)) {
        global $dbc;

        $data = mysql_real_escape_string (trim($data), $dbc);
        $data = strip_tags($data);
} else {
        $data = mysql_escape_string (trim($data));
        $data = strip_tags($data);
        }
        return $data;

    }
4

3 回答 3

2

对于管理页面来说,没有什么是矫枉过正的。您需要尽可能多的安全性。

至于你的方法,大部分都还不错,但有一些建议:

  • 设置chmod为 700 不会阻止其他人至少访问管理页面(我假设这就是您使用它的目的),因为它是访问文件的 Web 服务器,无论是谁发出 HTTP 请求。
  • 与检查相比$_SERVER['REMOTE_ADDR'],创建一个唯一的用户 SSL 证书并只允许具有该用户证书的计算机(即您的)访问该站点可能更安全(也更容易)。这可以在您的 Apache 设置中完成(如果您设法设置 SSL,您可以返回并在您的 SSL 上设置用户认证),解决chmod问题,并防止人们欺骗您的 IP 进入您的管理页面。
  • 如果您不需要通过 SSH 连接到您的家庭计算机,请禁用 SSH 守护程序。这将(希望)防止其他人以您的计算机为目标来攻击您的服务器。

这些是我能想到的第一件事。当他们来找我时,我会添加更多。

编辑:对,记录!记录在您的管理页面上发生的所有事情。一切。对于 SSL,对于请求,对于数​​据库访问,对于一切。然后获取一个日志监视程序(例如:)logwatch来监视它的可疑活动。

于 2012-07-23T21:42:31.220 回答
0
  • 您是否还在cookie上设置了安全、域和仅 http 标志?

我的登录脚本在 sql 之前检查正则表达式,并且我的凭据存储在单独的管理表中

请不要将mysql_*函数用于新代码。它们不再被维护并且社区已经开始了弃用过程。看到红框了吗?相反,您应该了解准备好的语句并使用PDOMySQLi。如果你不能决定,这篇文章将有助于选择。如果你想学习,这里有一个很好的 PDO 教程

PS 据我所知,该$_SERVER['REMOTE_ADDR']变量使用起来非常安全,因为我认为可利用的唯一方法是攻击者通过您的机器代理或欺骗 IP。而且(错误时纠正我)两者都很难做到。

PS 2:

看到你在你的代码中使用,也请停止使用它:-)global有关此手表的更多信息,请参阅一般的依赖注入和SOLID 编程。与安全无关,只是编程的最佳实践。

于 2012-07-23T21:39:15.503 回答
0

确保您使用准备好的 SQL 语句,使用暴力破解保护(以防有人在您的 PC 上获得代理)并且使用 SHA2。SHA2 是一种糟糕的、无用的哈希密码方法。查看crypt函数或使用 pkbdf,或者至少;一个原始的 sha512。(参见“哈希”函数)

于 2012-07-23T21:47:22.850 回答