多层架构与安全实践指南

在现代软件开发中,为了提高应用程序的安全性和可维护性,遵循一系列规则至关重要。这些规则通常包括采用多层架构,确保每一层在物理上分离以增强安全性,以及确保业务逻辑层是唯一可以连接到数据层的层等。每个项目或公司可能有自己的规则,但核心概念是一致的。

本文将通过ASP.NETWCF RIA Services的示例,展示如何实现这些安全实践。

多层架构的基本概念

多层架构是一种设计模式,它将应用程序的不同功能划分为不同的层。典型的多层架构包括表示层、业务逻辑层和数据层。每一层都有其特定的职责,并且通常每一层都应该物理上分离,以增强安全性。例如,表示层通常位于DMZ(去军事化区)中,而其他层则受到严格的安全保护。

ASP.NET中的多层架构实践

ASP.NET中实现多层架构的一个示例是,数据层必须首先通过表示层和业务逻辑层才能被访问。在大多数情况下,每个物理层也由防火墙保护。

Silverlight与WCF RIA Services的多层架构

当使用Silverlight和WCF RIA Services构建应用程序时,表示层在客户端运行,这可能会引发安全问题。一旦中间的Web服务器被攻破,攻击者就可以直接访问数据层。为了避免这种情况,可以添加一个额外的层,包含一些WCF服务,这些服务将被WCF RIA Services消费。但这会导致代码重复,因此这不是一个好的解决方案。

分离Web应用程序和WCF RIA Services

在之前的一篇文章中,讨论了如何将托管Silverlight的Web应用程序和托管服务的Web应用程序分离。这种设置使服务可以在一个服务器上运行,而托管Silverlight应用程序的Web页面在另一个服务器上运行。这种物理分离的层可以提高安全性。但是,Silverlight仍然需要直接连接到WCF RIA Services。

使用IIS Application Request Routing

IIS Application Request Routing(ARR)是一个强大的工具,它允许使用IIS作为反向代理。通过使用反向代理,可以创建一个设置,其中Silverlight应用程序不再需要与逻辑层服务器通信,因此不需要将逻辑层服务器暴露在互联网上或将其放置在DMZ中。

安装和配置IIS Application Request Routing

要安装和配置IIS Application Request Routing,请按照以下步骤操作:

  1. 准备服务器:确保有IIS 7或IIS 7.5,并下载并安装Application Request Routing扩展。
  2. 创建业务逻辑层站点:在IIS中创建一个名为LogicSite的网站,并确保'Host name'指向logictier。
  3. 配置业务逻辑层站点:将.NET Framework版本更改为v4.0,并创建一个名为clientaccesspolicy.xml的文件,以允许Silverlight跨站点访问。
  4. 创建表示层站点(和反向代理):在IIS中创建一个名为PresentationSite的网站,并确保'Host name'指向presentationtier。
  5. 配置IIS Application Request Routing和IIS Rewrite:在PresentationSite的web.config文件中添加配置,以确保所有请求都被转发到逻辑层服务器。

最终结果

通过遵循上述步骤,已经实现了一个企业级解决方案,其中Silverlight应用程序仅访问表示层服务器,而不需要直接与逻辑层服务器通信。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485