调用每次调用都需要用户名和密码的 SOAP 服务.我应该如何存储密码



我正在一个通过SSL调用SOAP Web服务的库中编写一个类。SOAP 服务要求每次调用时传入用户名和密码。此库将由公共网站的服务器代码引用。我不确定存储密码的标准/最佳方法是什么。

我看到的选项...

  • 将密码硬编码为类中的字符串
  • 将密码存储在数据库中
  • 将密码存储在配置文件中

这些都不是既安全又易于更新的。

我不是安全专家,我已经很久没有做过任何 .NET 开发了(所以信息可能已经过时了),但这里有一些想法/建议可能对你有所帮助。

将密码硬编码为类中的字符串

别这样。您的源代码在版本控制中(TFS,Git等),用户名/密码也是如此,从您签入代码到...永远。为了保护对用户名/密码的访问,您现在被迫保护对源存储库的访问。我想所有开发人员都需要访问源代码,但并非所有开发人员都需要知道用户名/密码。

将密码存储在数据库中

根据您的个人资料,我假设您使用SQL服务器?查看哪些加密选项可用于 SQL Server 如果要继续该路径。也许其中一个足以满足您的用例。

将密码存储在配置文件中

同样,这最终可能会进入源代码管理,但它并不像第一个选项那么糟糕,因为您可以加密配置文件的部分内容(我假设基于您的个人资料使用 C#)。

如果您可以控制 SOAP 服务,也许可以将其从需要用户名/密码更改为使用相互身份验证。在客户端上安装证书(拒绝导出密钥),并仅允许从安装了证书的客户端调用 Web 服务(您也可以在开发人员的计算机上安装此证书)。

解决方案实际上取决于保护此用户名/密码的重要性,即您想要的安全级别(您没有在问题中指定)。

如果它不是非常重要,则可以将其作为点 2) 或从配置引用的外部文件(未在源代码管理上提交)放在数据库中,并将该文件放在服务器或开发计算机上。然后,您基本上控制对机器的访问(假设所有开发人员在从键盘上起床时都锁定了他们的PC)。

如果保护这一点真的非常重要,你可以向 https://security.stackexchange.com/寻求比我:)更好的建议。

相关内容

最新更新