代码之家  ›  专栏  ›  技术社区  ›  Soonts

穷人的身份验证

  •  1
  • Soonts  · 技术社区  · 14 年前

    我正在为一些小企业开发一个ASP.NET网站。网站需要一个密码保护区域,网站所有者将在该区域管理网站内容。对于世界其他地方,该站点是完全只读的。

    我设计并实施了以下方案:

    • 用户想要访问一些受保护的页面。
    • 每个受保护的页面都继承“adminiface”母版页,这会改变用户界面,以便用户知道自己在受保护的页面上,并检查安全cookie。如果没有cookie或错误的cookie:重定向到auth.aspx。
    • aspx使用rngcryptoServiceProvider生成一个大的随机数,然后将其发送到客户机+密码窗体。
    • 用户输入密码。
    • 客户端javascript结合随机种子+密码,计算得到的字符串的md5,将md5发布到服务器。
    • 服务器将随机种子与会话保持的值进行比较,如果确定,它将结合随机种子+密码,计算MD5,比较MD5。
    • 如果校验和匹配,服务器会生成一个较大的随机数,用作安全cookie。
    • 服务器将安全cookie存储在会话对象中,并将cookie发送给现在被视为已授权的客户机。

    正确的密码作为字符串常量存储在auth.aspx源中。

    这个方案可以吗?

    另外,我知道ad+kerberos更好,但是在godaddy的共享主机上,我甚至没有权限再创建一个应用程序。

    6 回复  |  直到 14 年前
        1
  •  2
  •   mtmk    14 年前

    听起来不错。标准HMAC材料。但是你的弱点:

    1. 应用程序:依靠javascript和会话
    2. 安全性:使用新的代码库

    根据你的要求,你可能没事。我已经说过,我强烈建议使用表单身份验证,这可以解决这些问题以及更多的问题。而且很容易使用。

        2
  •  4
  •   Rebecca    14 年前

    我只是将用户身份验证硬编码到web.config中。这意味着您仍然可以使用成员资格控件。我们可以看到一个很好的例子 here . 不需要数据库,也不需要成员资格提供程序。如果您有一个用户(或很少的用户),那么这是一个很好的选择。

    如果您担心web.config中的身份验证详细信息,那么可以 encrypt specific sections Web.config的。

    这似乎是一个比您已经实现的更简单的解决方案。

        3
  •  1
  •   Larry K    14 年前

    嗯,为什么不呢? http://en.wikipedia.org/wiki/Basic_access_authentication 使用HTTPS(甚至不使用)?

    --威胁的真实情况是什么?

    你的方法似乎有点老生常谈。通常的规则是尝试使用现有的安全系统,而不是自己发明。发明一种真正安全的新身份验证机制是一个非常困难的问题。

        4
  •  1
  •   Brock Woolf    14 年前

    许多智能人(即创建WEP的软件工程师)在创建自己的安全认证机制时尝试过,但失败了。搞砸自己的“定制”安全认证的可能性是无止境的(没有冒犯,但即使对安全专家来说,处理它也是一个极其困难的问题)。

    我认为最好用 经过证实的 如基于SSL证书的身份验证方法。

        5
  •  0
  •   Yann Ramin    14 年前

    TLS/SSL有什么问题?它将在这里提供许多好处,其中最不重要的是一些站点线程——用户身份验证。

        6
  •  0
  •   Paddy    14 年前

    正如前面所提到的,为什么不直接使用表单身份验证和ssl证书-非常容易设置(特别是对于一个用户),而且您知道它已经过测试…你不知道你可能错过了什么。