gra*_*ady 39 c# security password-protection
我的代码中有一个密码,需要连接到sftp服务器.什么是在代码中"混淆"或隐藏它的最佳方法?
谢谢
bad*_*d99 27
不要将密码存储在源代码中,将其存储在App.Config(或Web.Config)中的受保护部分.
请参阅此Microsoft Doc中的"使用受保护的配置加密配置文件节"部分
这可以通过使用内置Windows内容加密加密密钥,锁定到Mac地址和各种其他未记录的内容来实现.
如果您使用多个服务器,这甚至可以工作:
...如果您计划在多个服务器(例如Web场)上使用相同的加密配置文件,则只有RsaProtectedConfigurationProvider允许您导出用于加密数据的加密密钥并将其导入另一台服务器.
使用此功能,如果有人想获取您的密码,他们必须先破坏您服务器上的Windows安全性(这不是不可能的,但比查看您的IL到目前为止的密码更难).
SLa*_*aks 13
不要打扰.
你可以做任何事情,你的攻击者可以轻易撤消.
但是,如果它只需要在一台机器上运行,那么您可以使用ProtectedData
该类,它将安全地保护它免受那些不在该机器和/或用户上的人的攻击.
通常,唯一可以远程安全的方法是将密钥存储在单独的安全位置.
例如,您可以使用密码的(非MD5)哈希对其进行加密,然后要求用户输入密码以便您可以获取哈希值.(哈希和密码本身不会存储在任何地方;您应该创建一个单独的哈希来验证密码)
Wil*_*ill 13
我实际上考虑使用App.Config或Web.Config中的"受保护的部分"功能比在代码中存储密码更安全.
任何具有服务器访问权限的人都可以通过运行每个人都引用的文章中描述的解密命令来加密配置的该部分,就像加密它一样快:
aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"
Run Code Online (Sandbox Code Playgroud)
https://msdn.microsoft.com/en-us/library/zhhddkxy.aspx#Anchor_1
因此,ASP.Net的这个功能只会增加安全性,以防黑客以某种方式访问您的web.config而不是整个服务器(发生在2010年,因为@djteller在oracle padding攻击评论中提到).但是,如果他们确实有服务器访问权限,那么您将在一次cmd调用中公开.他们甚至不必安装ildasm.exe.
但是,在代码中存储实际密码是一项维护噩梦.所以我看到的一件事就是在web.config中存储加密密码并在代码中存储加密密钥.这实现了在可维护的同时将密码隐藏在随意浏览中的目标.
在这种情况下,黑客必须至少反编译您的代码,找到您的密钥,然后找出您正在使用的加密算法.并非不可能,但肯定比运行"aspnet_regiis -pd ..."更难.
与此同时,我也在寻找这个六年前问题的更好答案......
归档时间: |
|
查看次数: |
41491 次 |
最近记录: |