.Net加密
我想知道的是加密配置文件中连接字符串的确切方法。以下是我的问题:.Net加密,.net,encryption,clickonce,connection-string,app-config,.net,Encryption,Clickonce,Connection String,App Config,我想知道的是加密配置文件中连接字符串的确切方法。以下是我的问题: 使用机器级加密,任何访问我的服务器的人都不能编写一个小小的.Net程序来读取连接字符串的内容吗 如果我将应用程序部署到企业环境中的用户计算机上,并且应用程序在配置文件中具有连接字符串,那么如何确保只有我的应用程序才能对其进行解密?该场景在ClickOnce部署场景中特别有趣。我读过一些关于人们在发布服务器上存储未加密的配置,并在第一次下载、安装和执行应用程序时在机器级别进行加密的文章。对我来说,这听起来太错误了——连接字符串在电线
好问题,事实上
你不能确定没有人会解密你的连接字符串(或密码)。当然,您可以对其进行加密,但人们将能够对您的应用程序进行反编译,并查看您使用的加密算法以及用于解密连接字符串/密码的密钥。也许这更像是一个极端的场景,但这是可能的(我在学生时代是一个邪恶的破坏者:)。因此,如果您害怕这种情况,您必须保护您的应用程序,使其更难反汇编。这是另一个讨论的主题,但例如,您可以使用或其他好的模糊器-这将使破解人员更难理解应用程序内部的情况。
因此,一个可能的解决方案可以是“加密连接字符串+使用模糊器”,但是,正如我所说,它不会为您提供100%的保护。使用对称加密存储机密总是有问题的,只要您不想提示密码或使用其他技术解决方案来解密您的机密(如特殊硬件)。当您必须将完整的密钥存储在系统中的任何位置时,其他人都可以检索它 我肯定会尝试使用操作系统的机制。使用MS-SQL在纯windows环境中工作时,应使用集成安全性,而不是用户/密码。其他数据库也可能具有类似的功能。
另一个(较弱的)选项是使用操作系统的安全设置来保护明文文件-只有用户才能访问该文件。但是,您和您的用户必须信任管理员。在这种情况下,还应使用对称加密。但请看我的第一个论点——这并不是真正安全的
加密基础设施旨在保护当前用户的机密不被其他用户窃取。它不是为了保护应用程序的机密不被用户使用。您需要的不是加密,而是DRM,您需要查看DRM基础架构以获得答案。我不知道世界上有一个托管库。Gustavo您可以实现这一点(这是我的应用程序计划,基于登录)
用户在.Net应用程序中输入凭据。凭证被传递到一个.php服务器端应用程序,该应用程序使用凭证登录数据库,检索一个密钥并将其传递回.Net应用程序。然后在.Net应用程序中的硬编码加密连接字符串上使用该密钥,以允许完全访问数据库。您能更深入地描述您的第一个问题吗?什么是“机器级”加密?据我所知,您可以使用内置加密在机器级和用户级进行加密。例如,使用configSection.SectionInformation.ProtectSection(“RSAProtectedConfigurationProvider”);或者通过aspnet_regais.exe,也许详细说明昨天提出的问题()比创建一个措辞不同的重复问题更有意义。今天的最终加密方法是明天的愚蠢。看来是这样。谢谢鲁萨努。我感谢你的帮助。