在C#中访问安全资源
在我的应用程序中,我需要读取随应用程序一起分发的加密文件.我还需要使用密码连接到下载服务.我的难题是存储这些资源的密码?在其他语言中,例如C,我只是将它们存储在代码中.但是,由于有些工具可以反汇编C#,例如JetBrains DotPeek,这是不安全的.
以下是我到目前为止所考虑的解决方案,但我不认为它们中的任何一个都是安全的: >将密码存储在代码中:不好,因为C#可以被反汇编. 这个非常典型的问题的正常解决方案是什么? 解决方法
注意:如果您希望100%脱机完成身份验证,则没有真正安全的方法,因为有权访问计算机的人可以访问所有内容.
首先,cpp可以按照this SO answer进行反编译.这只是丑陋的地狱. 为什么不使用存储散列密码的数据库呢?当用户想要读取文件或从服务下载时,您要求他输入密码,然后对其进行散列并将其与存储在数据库中的散列版本进行匹配.匹配当然可以通过安全协议完成. 这是关于ASP.NET auth的tutorial.您可以阅读它只是为了了解它们存储密码并匹配它的方式. 请记住,混淆/多级加密不会阻止某人真正决定. 您的帖子中根本没有提到我的答案.你不喜欢这种方法还是没有想到它? 编辑:关于文件,因为不允许用户解密它,你可以在数据库中存储另一个“密钥”.当用户使用其密码进行身份验证时,您将从数据库中检索密钥并解密该文件.这样,用户永远不会看到该文件的密钥. 根据VytautasPle?kaitis的建议:您可以使用应用程序的has作为身份验证令牌从数据库中检索文件的密码.从用户友好的角度来看,这个想法是好的,因为它允许用户不必提供任何密码,但这意味着数据库的“密钥”对于您的应用程序的每个实例都是相同的(破解它一次,你破解他们所有).此外,这意味着要获得应用程序的密钥所有你需要做的就是得到执行exe的哈希…我是一个安全专家(甚至不接近那个)所以我不知道这是多么安全但我不确定这是最好的主意. 对我来说,密码/哈希/数据库模式是最好的,特别是因为它多年来一直被使用.这是.NET Core身份验证的内置方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 项目技术总结一之JSONP实现跨域调度
- ruby-on-rails – 在rails中为options_for_select定义id或类
- VS2005 错误未能加载文件或程序集“System.EnterpriseServi
- JSON.parse()和JSON.stringify()
- objective-c – 核心数据 – 反向删除规则…我应该应用哪一
- ruby-on-rails – 实时预览的Rails markdown编辑器
- PostgreSQL在windows 10上的下载和安装
- xcode – clang:错误:Mac OSX Mavericks上不支持选项’-s
- c – 为什么此模板在Xcode中有错误而在Visual Studio中没有
- 常用的验证数字字母组合的正则表达式