【问题标题】:How to store a password for later use?如何存储密码以备后用?
【发布时间】:2015-11-02 15:03:38
【问题描述】:

我需要能够存储用户的 Exchange 密码,以便稍后使用 EWS 执行某些任务。我知道以纯文本形式存储密码是一种可怕的犯罪行为,那么我有什么选择呢?

就我而言,我的应用程序将有权访问一个管理帐户,该帐户将能够使用模拟来处理用户的日历。我需要存储此管理员帐户的密码,以便以后在与 Exchange 服务器进行身份验证时使用它。我不打算使用 EWS 托管 API。

【问题讨论】:

    标签: outlook passwords exchange-server exchangewebservices


    【解决方案1】:

    我有一个用户创建了一个具有类似要求的日历应用程序。默认情况下,全局拥有这些权限的帐户非常糟糕,不推荐使用。模拟角色由需要访问应用程序以降低风险范围的部门授予。但是,如果您在全球范围内需要此功能,我建议您这样做以减少帐户/密码泄露:

    1. 将帐户功能仅限于 Exchange 服务。仅需要邮箱访问和模拟角色的 EWS 服务帐户不需要本地登录和其他一般域用户权限等功能。在这种情况下,该帐户无法登录计算机,也无法用于 RDP。这限制了恶意使用的风险。

    2. 用户/密码可以存储在您的应用程序数据库中,连接字符串也可以存储在您的应用程序之外,这里有很多:https://security.stackexchange.com/questions/22817/how-to-encrypt-database-connection-credentials-on-a-web-server 并在数据库中加密密码;延伸阅读:http://www.darkreading.com/safely-storing-user-passwords-hashing-vs-encrypting/a/d-id/1269374

    3. 限制数据库服务器和管理访问。如果数据库服务器在组之间共享,这是一个更大的问题。审核数据库服务器访问,如果厨房里有太多厨师,请重新限制。数据库服务器也不应该被用户网络直接访问,但这可能是一个需要解决的更大问题。

    4. 限制对应用程序的访问。例如,它是在外部可用还是仅在您的周边可用?无论哪种方式,应用程序还应包括仅用于访问的身份验证,使用 Kerberos 或其他一些 SSL 身份验证,确保应用程序不能用于 DoS 过度访问的 EWS 服务。

    5. 为此用户在 Exchange 上创建一次性限制策略并进行相应分配,以防止应用程序破坏 EWS 或限制常规用户功能。如果不遵循建议,黑莓管理员就很难学到这一点。当 BES 服务器无法正确断开连接时,Web 服务将开始丢弃有效的客户端请求。因此,BES 必须指示用户为各种 Exchange 功能创建一次性限制策略。我为创建我的 EWS 应用程序的用户做了同样的事情。有几次它救了我。

    实际上,这将归结为良好的应用程序设计和与 Exchange 团队的协调要求。

    不要:

    1. 不要将用户名/密码存储在 Apache/IIS 页面或连接字符串中
    2. 如果没有必要,请不要为帐户授予全局权限
    3. 不允许未经身份验证的应用程序访问并允许无限连接时间

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 2014-09-09
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多