【问题标题】:Secure connection string from winforms app to Azure SQL从 winforms 应用程序到 Azure SQL 的安全连接字符串
【发布时间】:2014-02-06 23:33:13
【问题描述】:

我正在使用一些移动客户端升级现有的 winform 应用程序,并且非常希望将 SQL 放入 Azure,而不是当前的本地 SQL 解决方案。然后我会将 app.config 文件中的连接字符串更改为指向 Azure。

目前我最担心的问题之一是安全性,因此我想保护连接字符串(通过加密...),以便无法在 app.config 文件中本地查看它。

有谁知道我应该如何加密部分或全部 app.config 文件以加密我们看到的连接字符串。我假设由于 Azure SQL 使用 SSL,所以当实际从 winform 应用程序向 Azure 发出请求时,我不需要太担心它的安全性。

非常感谢任何帮助。

杰森。

【问题讨论】:

  • 您可以将凭据存储在加密文件中,然后通过读取该文件连接到数据库

标签: c# sql winforms azure


【解决方案1】:

在桌面或移动应用程序中使用 SQL Azure 连接字符串是没有意义的。服务器变得容易受到攻击,因为如果您的应用程序可以,任何人都可以解密连接字符串。我能想到的其他一些问题是

  • 更改 SQL Server 位置会出现问题,因为您在每个客户端配置文件上都有可用的位置。
  • 必须为您要提供数据库访问权限的每个用户进行权限管理。

您需要考虑构建一个中间层,例如 OData 端点或 Web API 端点,其中涉及使用 ASP.Net 之类的服务器框架。

还可以查看Azure Mobile Services,它可以配置数据库和服务器组件以支持标准 CRUD 操作和其他功能。

【讨论】:

    【解决方案2】:

    警告:这不是保存解决方案!

    您可以将凭据存储在加密文件中,然后通过读取和解密该文件中的凭据连接到数据库。

    文件加密教程look here

    连接数据库:

    string connectionString = myconnectionstringReadedFromFile;
    
    //
    // In a using statement, acquire the SqlConnection as a resource.
    //
    using (SqlConnection con = new SqlConnection(myconnectionstringReadedFromFile))
    {
        //
        // Open the SqlConnection.
        //
        con.Open();
    
        //.... your stuff
    
    }
    

    【讨论】:

    • 将加密密码/密钥作为 Winform 本身的一部分有什么意义?它不安全。
    • 你可以混淆它。当然作者应该考虑到代码可以被反编译。没有 100% 安全的解决方案。也许这就够了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多