2016-04-25 54 views
0

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

我看到的选项...

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

这些都不安全,易于更新。

回答

1

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

硬编码密码在类

不要做一个字符串。你的源代码是在版本控制(TFS,Git,无论)中,所以将是用户名/密码,每个开发人员从你签入代码到......永远都能看到。为了确保对用户名/密码的访问,您现在被迫保护对源存储库的访问。我想所有的开发者都需要访问源代码,但并不需要知道用户名/密码。

存储在数据库中的密码,根据您的个人资料

我假设你使用SQL Server? See what encryption options are available to SQL server如果你想要走这条路。也许其中一个就足够你的用例。

存储在配置文件中

再次输入密码,这将有可能最终在源代码控制,但它不是那么糟糕,因为第一个选项,因为你可以encrypt parts of the config文件(我假设C#基于你的个人资料)。

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

解决方案真的取决于保护这个用户名/密码的重要性,即您希望的安全级别(您没有在您的问题中指定)。

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

如果保护这个真的非常重要,你可以问https://security.stackexchange.com/更好的建议比我可以给你:)。

相关问题