ASP.NET Web应用程序开发:隐藏承包商/收费人员的敏感信息
我正在开发使用Amazon Web Services的Web应用程序。我正在使用ASP.NET MVC。我还使用了几个Amazon Web Serivces,包括S3,EC2和SQS。我打算雇用自由职业者来帮助发展。现在我将Amazon Web Service密钥和密钥放入web.config文件中,并将其连接到我的信用卡。我使用托管的SVN源代码控制,TeamCity用于自动构建和测试。ASP.NET Web应用程序开发:隐藏承包商/收费人员的敏感信息
问题是,有没有一种方法让自由职业者可以签出代码并进行测试,而不需要知道诸如AWS密钥和机密等敏感信息?我应该把它放在不同的文件中吗?我应该把它放在数据库中并加密它吗?
自由职业者的问题是他们通常可以访问王国的钥匙。在.net中,你可以把所有你想保密的东西扔进一个单独的程序集......但是可以颠倒并打开它。您可以将数据保存为加密格式,但在某个时间点,您必须授予他们访问解密算法的权限,以便他们在与这些服务交谈时可以使用解密数据。如果您有开发商的店铺,您可以随时创建一个封装程序,在自由职业者代码和服务层之间进行交互,从而有效地保护您的代码和敏感数据免受不信任的自由职业者的影响。
最简单的方法是使用传统的抽象层。不要让你的自由职业者深入访问你的代码库,你应该很好。在您的声明中,您表示您使用的是公共SVN,这意味着您可能需要多个存储库。
不要轻易解决这个问题就卖 - 你不能在更长的时间内隐藏开发者的密钥。如果存储在一个DLL中,他们可以使用Reflector等工具反编译该DLL。如果它在web.config中被加密,但是在需要使用它的地方解密,他们可以使用代理工具监视网络流量,或者附加一个调试器。尽管所提出的方法对于防止密钥的不经意窃取是有用的,例如由典型的用户,但是有经验的人确定找出并能够运行你的代码,通常可以找到一种方法来获得他们想要的。
尝试雇用你可以信任的人。如果您必须进行背景检查。
如果您确实需要隐藏您的密钥,请将其使用的代码保存在开发人员无法访问的单独系统上,除非通过设计良好的安全接口。基本上,您最终将通过其他Web服务代理访问AWS。
我想这两个回答我的问题,但我只能标记一个作为答案。 – ycseattle 2009-06-19 00:01:03