2015-11-02 98 views
0

我需要能够存储用户的Exchange密码,以便以后可以使用它来使用EWS执行某些任务。我知道以纯文本存储密码是一个可怕的犯罪,所以我有什么选择?如何存储密码以备后用?

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

回答

2

我有一个用户创建了一个具有类似要求的日历应用程序。默认情况下,全局拥有这些权限的帐户是可怕的,不推荐。模拟角色由需要访问应用程序以减少风险范围的部门授予。不过,如果你需要这种全球范围内,这里是我推荐的缓解账号/密码曝光:

  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身份验证进行访问的身份验证,确保应用程序不能用于阻止EWS服务遭受过度访问。

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

真的会归结为良好的应用程序设计和协调与Exchange团队的要求。

不要的:

  1. 不要存放在阿帕奇/ IIS网页的用户名/密码或连接字符串
  2. 不要授予全局权限的帐户,如果您没有
  3. 不要允许应用程序未经验证的访问,并允许无限制的连接时间

希望这有助于。