最近我有点担心我的WPF应用程序的安全性。我刚刚开始,所以安全性不是我的主要关注点,但现在我有点担心有人会打开程序文件夹中的.exe.config文件,并在那里使用凭证。使用这个基本的CRUD应用程序的人可能不知道如何处理它,即使他们得到了它,但我不想冒任何风险。
我只是在寻找最简单的方法来隐藏它,要么使用外部配置文件,要么加密它。我已经在堆栈溢出上尝试了所有可能的答案,但我只是找到了一种简单的方法。
下面是我的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="data source=xx.xxx.xx.xx,port;initial catalog=MyDB;user id=testsubject;password=password;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>下面是我已经尝试过的:保护App.Config文件或加密
我遇到的问题是,它加密了文件,并且在我的机器上工作得很好,但是我不能在另一台机器上部署它。
有人能帮忙做一些简单的、令人沮丧的建议/例子吗?我不想使用Windows身份验证,也不想为了实现这一点而编写大量代码。只是为了让你更难拿到证书。
发布于 2018-04-03 18:56:39
简单的回答是:你不能--你在WPF代码中放的任何东西都不可能是安全的。
当然,您可以采取一些步骤,比如对配置文件中的值进行编码,然后让代码对它们进行解密。问题是,潜在的攻击者可以简单地将应用程序转储到反编译程序中(如DotPeek),并查看您的解密方法是什么。基本上,唯一能阻止的人就是那些侵入你的系统最不危险的人。
通常,您希望在应用程序和DB之间设置一个层,以便攻击者拆卸WPF应用程序时不会与数据库有原始连接。这样,他们就可以得到一个WebService的地址,而不是让攻击者直接进入数据库。最糟糕的情况是,他们开始自己打电话给WebService ABC,但这比他们直接访问数据库要好得多。
发布于 2019-03-07 21:03:09
我只想说,微软在ASP.Net中为ASP.Net文件提供自动加密,而不是在WPF /桌面应用程序中提供自动加密,这是绝对荒谬的,也是毫无意义的。
真的吗微软?基本上没有好的答案
https://stackoverflow.com/questions/49637037
复制相似问题