2012-07-16 39 views
0

我想調整我的MVC項目,以便我可以build a multi-file assembly。作爲概念證明,我的意圖是使根web.config成爲MVC程序集的一部分。這樣做的基本原理是防止篡改web.config文件。用於ASP.NET(MVC)項目的多文件組裝

的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」)。

以前有人做過這個嗎?指針?

+0

我沒有看到netmodules如何防止web.config篡改? – vcsjones 2012-07-16 15:22:55

+0

如果你不想讓人們改變它,爲什麼要在web.config中存儲任何東西?爲什麼不用你想要的值硬編碼你自己的靜態類? – Josh 2012-07-16 16:06:54

+0

@vcsjones:.net/fusion將阻止加載的(強命名)程序集,其中包含修改後的散列;散列由所有文件部分組成。 – 2012-07-16 17:09:27

回答

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

它不會被嵌入,而是混淆超越人類可讀的文本。 希望有所幫助!