5

几年前,我记得我在一个域情况下处理多个站点时遇到了困难,其中一个站点被放置在根目录中。

当时我阅读了一篇权威文章,清楚地向我解释了为什么这是一个坏主意,我记得是级联 web.config 问题是主要原因(迫使您取消声明与子项目本质上不相干的冲突引用项目)。从此以后,我总是在自己的虚拟路径中部署任何网站,使用根目录中的单个重定向指向默认网站。

我似乎再也找不到那个权威参考,从那时起部署考虑可能已经改变。

这种情况的优点和更有可能的缺点是什么?我之所以问,是因为与我合作的一家公司不赞成以这种方式分离部署,我认为这不是一个好主意。

4

2 回答 2

2

简短的回答:隔离。IMO 在不隔离它们的情况下托管不同的网站/网络应用程序的好处是没有意义的。

长答案:

优点:

  • 使用没有特定绑定(即别名)的单个端口:如果您无权访问网站绑定,它很有用
  • 快速部署和动态网站创建:您可以创建一个新的子网站,而无需在 IIS 端声明它
  • 共享设置:将网站基础设置应用于所有子站点(文档、mime 类型等...)

缺点:

  • 应用程序池隔离:无身份隔离、无工作进程隔离、无故障/恢复隔离等...(超时、内存限制等...)

  • AppDomain 或终身隔离:你必须照顾你的网站 AppDomains。如果您共享同一个 AppDomain,您将共享相同的生命周期:如果 AppDomain 被卸载,则此 AppDomain 下的所有网站都将关闭并重新加载(即,如果您触摸 AppDomain web.config)

  • 架构隔离:一些 Web 应用程序开发需要在 IIS 端进行一些调整,如果您只为一个应用程序调整 IIS 池或网站,它会对所有站点产生影响。例如,我考虑 32 位和 64 位设置或通配符映射。

  • 代码和安全隔离:在同一个工作进程和/或 AppDomain 中运行的应用程序对跨应用程序访问/黑客/攻击的保护较少。您必须更加警惕,以确保来自应用程序的信息无法被其他人读取。

  • 审计:审计网站活动和失败可能会更加困难。

Web 应用程序隔离一直是互惠环境的目标,以保护应用程序之间的相互隔离。

自 IIS 7 起,应用程序池隔离通过“应用程序池标识”走得更远:http: //www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx

我也找到了这篇文章:http ://searchsecurity.techtarget.com/tip/Web-application-isolation 。

您还应该查看 SharePoint 网站集体系结构。这是想法:http: //blogs.msdn.com/b/sgoodyear/archive/2011/11/18/9848865.aspx

于 2012-05-04T15:52:15.463 回答
1

我能想到的在一个域下托管多个“站点”(例如 IIS 中的一个“网站”)的主要禁忌症是用户身份隔离;当您配置例如 Windows 身份验证时,登录到 /site1 的访问者也将登录到 /site2,这可能是您不想要的。

这同样适用于在域级别设置的 cookie。在 IIS 中,网站是一个安全边界(对于客户端也是如此),并且在同一个域中拥有多个“站点”可能会使您面临安全漏洞......

至于将一个“站点”放在根目录中,将其他“站点”放在子文件夹中;您为“根站点”设置的 appsettings 将级联到“子文件夹站点”;同样,这可能不是问题,但它是一个潜在的安全漏洞。

于 2012-05-04T13:52:23.020 回答