保护我的网站管理区域

时间:2012-07-23 21:34:33

标签: php

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

这就是我正在为安全做的事情。如果您认为这是好的以及我如何改进,请告诉我。

    所有页面上的
  1. 标题都会检查admin == true或die / redirect
  2. 因为我在家里有一个专用的ip,我只会在家里登录。我创建了所有页面,包括登录表单页面检查我的IP $_SERVER['REMOTE_ADDR'];!=标题重定向
  3. 我的登录脚本位于dir设置700文件夹权限。
  4. 我的登录信息和pw包含10个字母,数字和特殊字符组合。 PW存储为SHA2 HASH
  5. 我的登录脚本在regex之前检查sql,我的凭据存储在单独的管理表中
  6. 整个网站都使用SSL。
  7. 这样安全吗?我可以做更多吗?这有点矫枉过正吗?请分享您的意见和建议(特别是关于我的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;
    
        }
    

3 个答案:

答案 0 :(得分:2)

NOTHING 对于管理页面来说太过分了。你需要尽可能多的安全性。

至于你的方法,大多数方法都相当不错,但有些建议:

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

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

编辑:正确,记录!记录管理页面上发生的所有。一切。对于SSL,对于请求,对于数​​据库访问,对于一切。然后获得一个日志观察计划(例如:logwatch)以观察它是否有可疑活动。

答案 1 :(得分:0)

  • 您是否还在your cookies上设置了安全,域和仅http标志?
  

我的登录脚本在sql之前检查regex,我的凭据存储在单独的管理表

请不要将mysql_*函数用于新代码。它们已不再维护,社区已开始deprecation process。请参阅red box?相反,您应该了解prepared statements并使用PDOMySQLi。如果您无法决定,this article将有助于选择。如果您想学习,here is a good PDO tutorial

P.S。据我所知,$_SERVER['REMOTE_ADDR']变量使用起来非常安全,因为我认为可被利用的唯一方法是攻击者通过你的机器代理或欺骗ip。并且(当我错了时纠正我)两者都很难做到。

P.S。 2:

您的代码中是否正在使用global,请停止使用:-)有关此监视this talk有关依赖注入和SOLID programming的更多信息。与安全性无关,而只是编程的最佳实践。

答案 2 :(得分:0)

确保使用SQL的预准备语句,使用强制保护(如果有人在您的PC上获取代理)并且使用SHA2。 SHA2是一种用于散列密码的糟糕且无用的方法。查看crypt函数或使用pkbdf,或者至少;一个原始的sha512。 (参见"哈希"函数)