在wpf中的app.config文件中添加一些基本的安全层



最近,我一直在关注WPF应用程序的安全性。我只是刚开始的,所以安全性并不是我的主要重点,但是现在我有点担心有人会在"程序"文件夹中打开 .exe.config 文件,并在那里使用凭据。使用此基本CRUD应用程序的人们即使去了,也可能不知道该怎么办,但我不想抓住任何机会。

我只是在寻找以某种方式使用外部配置文件或对其进行加密的最简单方法。我在Stackoverflow上尝试了所有可能的答案,但我只是可以找到一种直接的方法。

这是我的app.config文件的样子:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c666935e080" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="DailyEntities" connectionString="metadata=res://*/Model.MyModel.csdl|res://*/Model.MyModel.ssdl|res://*/Model.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xx.xxx.xx.xx,port;initial catalog=MyDB;user id=testsubject;password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

这是我已经尝试过的:保护app.config文件或加密

我对此遇到的问题是它加密文件,并且在我的计算机上效果很好,但我无法在另一台计算机上部署。

和Microsoft文档

有人可以帮助一些简单,愚蠢的建议/示例吗?我不想使用Windows身份验证或编写大量代码来实现这一目标。只是使获得证书更难的事情。

简短的答案:您不能 - 您在WPF代码中的任何内容都无法安全。

当然,您可以采取类似的步骤,例如编码配置文件中的值,然后将代码解密。问题是,潜在的攻击者可以简单地将您的应用程序转移到分解器(如Dotpeek(中,并准确查看您的解密方法是什么。基本上,唯一停止的人是闯入您的系统最不危险的人。

通常,您想在应用程序和数据库之间放置一层,以便启动器拆卸WPF应用程序没有与数据库的原始连接。这样一来,他们就没有直接进入数据库的攻击者,而只是拥有Web服务的地址。最糟糕的情况,他们开始尝试自己调用WebService ABC自己 - 但这比他们具有直接DB访问要好得多。

我只想说这是绝对荒谬的,并且Microsoft将在ASP.NET中为Web.config文件提供自动加密,但是 not> inWPF/桌面应用程序?

认真的微软?基本上没有好的答案

最新更新