在PHP中设置管理区域最安全的方法是什么?

在PHP中设置管理区域最安全的方法是什么?,php,security,Php,Security,最近,我一直在考虑最安全的方式来设置一个网站上的管理区。我在玩弄的两个选择是 创建管理区作为主站点的一部分,要求他们首先使用电子邮件地址作为用户名进行注册,并设置管理级别。创建一个与网站完全独立的管理区,用户不必在其中注册,而是由另一位管理员设置。 我意识到,如果我将管理区域与站点分开设置,这将要求用户在尝试进入之前发现管理面板在那里。这会增加多少安全性 然而,强迫他们在主站点上注册一个电子邮件地址会将他们的帐户绑定到一个电子邮件地址,我认为这对安全有一点帮助?但是把管理区放在主站点上会更容易被

最近,我一直在考虑最安全的方式来设置一个网站上的管理区。我在玩弄的两个选择是

  • 创建管理区作为主站点的一部分,要求他们首先使用电子邮件地址作为用户名进行注册,并设置管理级别。
  • 创建一个与网站完全独立的管理区,用户不必在其中注册,而是由另一位管理员设置。
    • 我意识到,如果我将管理区域与站点分开设置,这将要求用户在尝试进入之前发现管理面板在那里。这会增加多少安全性

      然而,强迫他们在主站点上注册一个电子邮件地址会将他们的帐户绑定到一个电子邮件地址,我认为这对安全有一点帮助?但是把管理区放在主站点上会更容易被黑客攻击,因为用户需要做的就是在系统中找到一个bug,对吗

      我想我可以看到两者的积极和消极方面。

      我的经验法则是(大部分):

      登录后,管理员是在网站的设计中做一些事情,还是在一些完全不同的“设计”(像大多数CMS的后端)中。若它们保持相同的设计(并且站点有可能为用户注册),那个么只在主站点上创建管理员级别的帐户是有意义的

      如果用户没有注册的选项,请将后端设置为
      /admin/
      ,并停止注册


      此外,“黑客攻击”取决于数百万个因素,管理员的登录位置不是。。。好。。。重要信息。

      您还可以强制他们使用单独的管理网站,该网站的主网站上有电子邮件地址。事实上,两者都要做;在他们的主帐户上添加一个标志,上面写着“好的,这是一个管理员”。这样,您可以在主站点上显示指向管理站点的iframe,任何连接到管理站点的人都必须设置此标志


      最后,不要忘记单点登录;在连接到任何一个站点时,创建两个cookie,这样它们就不必在两个位置进行身份验证(除非它们必须通过设计)

      确切地说,最好将管理部分与主站点分开

      第一个原因是你所说的:用户必须发现它首先在哪里

      您可以做的另一件事是仅向某些ip地址授予对管理员文件夹的访问权限,例如使用.htaccess

      我意识到,如果我将管理区域与站点分开设置,这将要求用户在尝试进入之前发现管理面板在那里。这会增加多少安全性

      这就是你所说的“通过模糊实现的安全”。一般来说,这只能阻止那些不那么顽固的黑客。对于任何想入侵你网站的人来说,这只会给他们的成功带来短暂的延迟

      但是,如果把它放在一个已经安全的系统上,它的隐蔽性仍然是有用的。使用它可以防止普通最终用户看到他们不一定想要或不需要看到的东西

      通过选择“必须由其他管理员设置”选项,您将增加获得安全密码的机会。更好的是,自己为管理员生成强密码,不要让他们自己选择

      正如Greg W所指出的,晦涩难懂并不值钱,但在已经安全的设置之上使用起来很方便。我不认为将管理区域与任何其他区域分开会使其本身更安全或更不安全-如果您在管理区域中有不安全的代码,您将面临任何风险

      对于一般安全建议,我推荐Chris Shiflett的网站:


      强制管理员在更新任何数据之前输入密码-不要依赖他们现有的会话凭据

      使用沙箱。。创建不可见的诱饵管理员区域,指向/admin/manage/administrator这样的任何地方都会让你的黑客在很长一段时间内感到愉悦

      另外,尝试将真正的管理员文件夹从公用文件夹(public_html,www)中删除

      这些做法对我很有效