ClickOnce连接字符串加密

本文关键字:加密 字符串 连接 ClickOnce | 更新日期: 2023-09-27 18:09:42

我正在开发我的第一个真正的WinForms应用程序,我的老板要求我找出一种方法来加密app.config中的连接字符串。我在其他关于连接字符串加密的问题中读过一些建议,我认识到它不是解决安全/隐私问题的灵丹妙药。我们考虑过编写web服务来从数据库中检索数据,但这是一个非常小的项目,不幸的是,这不是目前的优先事项。

编辑:我遗漏了我在州立机构(社区大学)工作的细节,因为我们使用州规定的私人系统ID来识别学生,我们需要以某种形式或方式保护应用程序。学生可以输入他们的网络id来识别自己(无论如何我们都需要保护,因为一些学生有限制令,并且需要将他们的大部分记录保密),但许多学生只知道他们的系统id(始终保密)。

无论如何,我们想让这个过程与ClickOnce部署一起工作,但是当我运行ClickOnce可执行文件时,我的加密过程会使应用程序崩溃。这是我的加密代码(这是从这里的另一个问题中提取的):

public static void EncryptConfigSection(string sectionName)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConfigurationSection section = config.GetSection(sectionName);
    if (section != null)
    {
        if (section.IsReadOnly() == false &&
            section.SectionInformation.IsProtected == false)
        {
            section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
            section.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }
    }
    ConfigurationManager.RefreshSection(sectionName);
}

我从Program.cs中的Main()函数调用此函数,但我不确定这是否是适合它的地方。此外,虽然这个函数正确地加密了app.config,但只要我退出应用程序,app.config就会解密。我觉得我错过了拼图的一部分(或者可能是拼图的大部分)。

谁能给我一些关于这些问题的见解?我想重申一下,我认识到web服务是这里的最终目标,所以如果使用CLickOnce不能解决这个问题,那么我愿意建议我们现在优先考虑编写web服务。

ClickOnce连接字符串加密

你看过这个主题吗?它讨论了如何使用DPAPI设置客户机,以便对字符串进行加密。我仍然会关注web服务路由,而不是将连接字符串(无论是否加密)嵌入到客户机应用程序中。如果你在谈论你的领域之外的客户端应用程序(即非员工使用),这一点尤其正确。