我正在开发一个 asp.net mvc 2 网络应用程序。我的客户很可能希望将我的应用程序的副本托管在他们的服务器上,而不是我为所有客户将其托管在我的服务器上。
但是我发现这有问题,因为我计划使用 .net 2.0 加密器来加密我的 web.config 以使其更安全。我必须好好考虑,我只会给他们我的 .dll 和 View 等,他们不会得到我的文件的灵魂,所以他们可以加载它并看看发生了什么。
那么,如果我加密 web.config 并且数据库连接字符串突然发生变化,会发生什么情况?让它成为地址更改或用户名/密码更改。
如果它是加密的,他们将如何更改它?那是否意味着我必须重建我的网站并向他们发送包含更改的新副本?还是他们有不同的方式?
如果没有其他方法让我想到我应该这样做吗?如果发生某些事情会发生什么,无论出于何种原因,直到 48 小时后我才能对它们进行新的更改。这意味着他们不能在 48 小时内使用该服务。
我提供支持没有问题,但是当开始涉及他们可能应该控制的小事情时,他们可能首先应该改变。
我宁愿将其加密,但同时如果我必须对 web.config 进行所有更改,这也不好。因为它可能会引发不同的安全问题,因为他们必须以某种方式向我提供更改。
最佳答案
如果您只关心加密数据库连接字符串,this article解释 如何删除 web.config 的部分以分隔文件,然后加密/解密这些文件。
您在 configSource
属性中标识外部文件。 web.config 文件将如下所示:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings configSource="appSettings.config"/>
<connectionStrings configSource="connections.config"/>
<system.web>
<compilation debug="true" />
<authentication mode="Windows"/>
<identity impersonate="true"/>
</system.web>
</configuration>
然后您可以按照此处其他人建议的方式之一处理 connections.config。
关于.net - 这种情况下app.config和web.config中的数据要加密吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215488/