1
3
集成身份验证/Windows身份验证是一个不错的选择。没有密码,至少没有需要存储在web.config中的密码。事实上,这是我喜欢的选择,除非管理员明确地把它从我身上拿走。 就个人而言,对于任何因机器而异的内容(不仅仅是连接字符串),我使用以下技术从web.config中输入外部引用: http://www.devx.com/vb2themax/Tip/18880 当我向生产服务器管理员抛出代码时,他得到了一个新的web.config,但没有得到外部文件——他使用的是他以前的那个文件。 |
2
1
… 一个常见的做法是将第一个加密的连接字符串存储在机器上的某个地方,如注册表。在服务器使用该字符串连接之后,它将检索数据库中管理(也加密)的所有其他连接字符串。这样,可以根据授权要求(请求者、正在使用的应用程序等)动态生成连接字符串,例如,可以根据上下文和用户/组使用不同的权限访问相同的表。 我相信这个场景解决了所有(或大多数?)你的观点…… |
3
1
(首先,哇,我想2到3个“快速段落”比我想象的要长一点!我走了…… 我得出的结论是(也许你会不同意我的看法),在服务器上“保护”web.config的能力(或者通过使用aspnet-iisreg)只有有限的好处,而且可能不是一件好事,因为它可能会给人一种错误的安全感。我的理论是,如果有人能够获得对文件系统的访问权,以便首先读取web.config,那么他们也可能有权创建自己的简单aspx文件,该文件可以“取消保护”,并向他们揭示其秘密。但是,如果未经授权的人在您的文件系统中四处游荡……那么您手头上有更大的问题,所以现在我的整个问题都没有了! 一
我还认识到,也没有一种简单的方法可以将密码安全地隐藏在一个dll中,因为它们最终可以被反汇编和发现,也许可以使用类似ildasm的方法。
二
对
为了解决我提到的不希望密码存在于开发人员的笔记本电脑或SVN中的问题:通过单独的不存在于SVN中的配置文件来解决这个问题是(现在!)显而易见的选择。web.config可以在源代码管理中快乐地生活,而只是秘密部分不能。然而---这就是为什么我要用如此长的时间来跟进我自己的问题---我仍然采取了一些额外的步骤来尝试使这个问题变得更安全,那么至少要更安全一点。 模糊的 . 我们想要保密的连接字符串(那些不是开发密码的字符串)永远不会以明文形式存在于 任何 文件夹。现在,它们首先用一个秘密(对称)密钥加密——当然,使用新的可笑的加密机(tm)!只是为了这个目的而构建的实用程序——在它们被放入一个__db.config_文件的副本之前。然后只将db.config上载到其各自的服务器。密钥直接编译到dal_s dll中,然后它本身(理想情况下!)用dotfuscator之类的东西进一步模糊和加密。希望这至少能避免任何偶然的好奇心。 我不会太担心生活在DLL或SVN或开发人员笔记本电脑上的对称“dbkey”。这是密码本身,我会把它挡在外面。为了开发和调试,我们仍然需要在项目中有一个__db.config_157;文件,但是除了开发文件外,它中的所有密码都是假的。实际的服务器有实际的拷贝,只有它们自己的秘密。db.config文件通常被还原(使用svn)为安全状态,并且从未与真正的秘密一起存储在我们的Subversion存储库中。 尽管如此,我知道这不是一个完美的解决方案(是否存在?)一个仍然需要一个带有一些部署提醒的Post-It注释,但它似乎已经足够多的麻烦了,除了最聪明和最坚定的攻击者之外,这些麻烦可能会很好地将所有人拒之门外。我不得不向“足够好”的安全部门辞职,这并不完美,但让我在感觉良好后重新开始工作,让它成为“大学尝试”! 1。 根据我6月15日在这里的评论 http://www.dotnetcurry.com/ShowArticle.aspx?ID=185 -如果我不在基地就告诉我!-还有一些更好的评论 Encrypting connection strings so other devs can't decrypt, but app still has access 在这里 Is encrypting web.config pointless? 这里 Encrypting web.config using Protected Configuration pointless? 2。 关于不同主题但非常相关的概念的良好讨论和思考的食物: Securely store a password in program code? -真正让人印象深刻的是从所选答案中链接的pidgin常见问题解答:如果有人有你的程序,他们可以了解它的秘密。 |
zoid_ · 如何将列表中的一个项目更改为另一个列表中的另一个项目? 2 年前 |
YungOne · 如何将RSA私钥转换为pem 2 年前 |
Annie Nguyen · 使用函数对字符串进行加密/解密 2 年前 |
Louis · 在Java中存储令牌/密码的最佳实践 2 年前 |
beginner_geek07 · 为什么我的输出是“无”? 2 年前 |