0

我想调整我的 MVC 项目,以便我可以构建一个多文件程序集。作为概念证明,我的意图是使根 web.config 成为 MVC 程序集的一部分。这样做的基本原理是防止篡改 web.config 文件。

MVC 项目的假定“我必须修改”部分在这里:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

我不记得我如何“影响”进口。例如,我可以设置一个属性来使csc构建步骤生成模块而不是程序集吗?即使我做到了,我也需要一个结果模块的列表(即 itemGroup),以便我可以将其输入链接器(“csc /out”或“al /out /target”)。

以前有人做过吗?指针?

4

1 回答 1

1

您可以将 web.config 中的所有数据拆分为可以加密的单独数据文件。您的 web.config 将如下所示:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%">
            <section name="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" />
            <!-- Other system.web sections -->
        </sectionGroup>
  </configSections>
  <system.web configSource="OtherFile.config"/>
</configuration>

然后,您可以加密“其他文件”,使其无法被篡改。

<?xml version="1.0" encoding="utf-8" ?>    
<system.web>   
     <machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
       decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" />
   </system.web>

请参阅有关加密部分数据的 MS 文档:http: //msdn.microsoft.com/en-us/library/dtkwfdky.aspx

它不会被嵌入,而是在人类可读文本之外被混淆。希望有帮助!

于 2012-07-18T01:43:54.990 回答