【问题标题】:Simple implementation of admin/staff panel?管理/员工面板的简单实现?
【发布时间】:2011-02-15 07:34:14
【问题描述】:

一个新项目需要一个简单的面板(页面)供管理员和员工使用:

  • 最好不要使用 SSL 或任何数字认证的东西,通过 http 进行简单的登录就可以了。
  • 具有基本身份验证,仅允许管理员以管理员身份登录,并且任何工作人员都可以作为组“员工”登录。理想情况下,“凭据(用户名-哈希密码对)”将存储在 MySQL 中。
  • 如果有包配置简单,或者策略简单编码。
  • 某处(PHP 会话?)以某种方式(在每个页面的开头包含一个脚本以在执行任何操作之前检查用户组?),它将检测任何无效用户尝试访问受保护页面并将他/她重定向到登录表单.
  • 虽然仍然保持高质量的安全性,但这是我最担心的。

坦率地说,我对 Internet 安全以及 WordPress/Joomla 等现代 CMS 如何处理此问题知之甚少。

我脑子里只有一件事:我需要使用盐对密码(SHA1?)进行哈希处理,以确保任何通过网络获取用户名和密码对的黑客都无法使用它来登录系统.这就是客户想要确保的。

但我真的不知道从哪里开始,有什么想法吗?

【问题讨论】:

    标签: php security


    【解决方案1】:

    使用 HTTPS 是绝对要求,并且必须在会话的整个生命周期中使用。请记住,会话 ID 用于对浏览器进行身份验证,如果攻击者可以获得一个(嗅探或 xss),那么他不需要用户名/密码。这是由 OWASP Top 10 2010 A3 Broken Authentication and Session Management 列出的。如果您想实现安全会话,您必须阅读该链接。

    md4,md5 sh0 和 sha1 都是破坏消息摘要函数,永远不能用于密码。 sha-2 家族的任何成员都是不错的选择,sha256 非常大,是密码的绝佳选择。

    您应该绝对不要通过网络传输密码哈希或将其泄露给用户/攻击者。如果您要向服务器发送哈希进行身份验证,那么您在系统中引入了一个非常严重 漏洞。使用 sql 注入可以从数据库中获取密码哈希,然后可以简单地重放这个哈希进行身份验证,绕过破解密码哈希的需要。这就像您以明文形式存储密码一样。

    使用 $_SESSION 超全局和 session_start() 来维护您的会话状态,永远不要重新发明风团。默认的 PHP 会话处理程序是安全的,可以满足您的需要。

    session_start();
    if(!$_SESSION['logged_in']){
       die("Authentication required!");
    }
    

    还要确保在您的系统中实施CSRF 保护。使用 CSRF,攻击者可以通过强制浏览器发送请求来访问管理面板。确保为 XSS 测试您的应用程序,这是一个很好的免费 xss scanner,xss 可以再次通过使用 XHR 或通过获取 document.cookie 的值来劫持经过身份验证的会话。测试 SQL 注入和其他漏洞也是一个好主意,wapiti 可以解决问题。

    【讨论】:

    • @The Rook :非常感谢您提出基本规则。现在我看到拥有 SSL 的意义只是一个开始。我一定会想办法确保“普通”黑客不会太容易破解登录系统,而且我必须让客户知道花这么长时间来实现这样一个“小”东西是为了他自己好: )
    【解决方案2】:

    不使用 SSL 会在整个系统中留下相当大的漏洞,因为它很容易嗅探网络流量

    【讨论】:

    • @nduplessis :是的,这就是我害怕的。我认为客户不会花一毛钱购买威瑞信。对我来说,从头开始编写 OpenSSL 似乎有点困难。也许托管服务器会很好地提供 SSL 通道?
    • 不需要特殊编码。只需获得 SSL 证书。你可以在 20 美元以下找到很多。您的虚拟主机将为您安装一小笔费用。物美价廉。
    • @webbiedave :听到这真是太好了。我会说服客户通过他的网络托管来做到这一点。
    【解决方案3】:

    这已经在 SO 上进行了很多讨论,这里有一些有用的链接:

    【讨论】:

    • -1 没有 https 就不可能进行安全会话。这明显违反了 owasp a3:“Broken Authentication and Session Management”。很抱歉,但我必须给任何在 SO 上以漏洞为目的的人,这只是规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2012-10-04
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多