代码之家  ›  专栏  ›  技术社区  ›  Jonno

.NET如何构建一个DAL来满足我的需求?

  •  1
  • Jonno  · 技术社区  · 16 年前

    假设我必须在以下3台服务器上部署asp.net应用程序:

    2) “中”-不公开 3) Web服务器-公用

    我不允许直接从web服务器连接到DB。我必须通过'中间'-这纯粹是为了减缓攻击者如果他们突破了网络服务器。

    所有数据库访问都是通过存储过程进行的。无法访问表。

    我只想为web服务器提供一个ado数据集(我知道很多人不喜欢这个,但这是必需的)。

    使用ssh/vpn隧道,使一个连接到数据库'通过'中间服务器,似乎删除了任何可能的好处,维护'中间'。

    使用WCF binary/tcp消除了XML问题,但仍然有额外的代码。

    有没有一种方法可以提供ssh/vpn的易用性,但是在中间服务器上使用dal的潜在好处呢?

    非常感谢。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Joseph Ferris    16 年前

    就我个人而言,我会跳过“中间”。如果数据库没有公开,而web服务器是公开的,那么“中间”就什么也买不到。如果他们能找到一台未曝光的服务器,战斗就已经失败了。确保web服务器的安全,确保数据库服务器的安全,并确保软件在按预期配置时能够正常工作。

    不要试图攻击你,或者为了这样做而质疑需求——但我希望为了你自己的理智,可以采取一种更合理、更可维护的方法。

    -为了澄清,我并不反对使用实际的应用服务器。我的答案的上下文是基于OP的要求,即它被用作数据库代理层。

        2
  •  1
  •   Kelsey    16 年前

    因此,在您的“中间”服务器上,所有的web服务都是公开的,它们复制了您的DAL,希望这些DAL只调用存储过程,没有其他访问DB的权限。保护中间服务器,使其只能访问公共web服务器,而不能访问其他入口点。如果需要,可以使用SSL。

    确保数据库只接受来自“中间”服务器的连接,并且只能访问DAL需要调用的存储过程。

    如果有人真的破坏了公共服务器,他们应该只有端口80或443。你应该只有一些网络服务,所以你的曝光应该是有限的,如果它被破坏。我必须用类似的设置设置一个web应用程序,并且有相同的规则,即外部web服务器只能通过端口80或443与DMZ中的“中间”服务器通信,“中间”服务器只能连接到数据库。在每一步中,每台机器都被锁定为只能与之通信的机器。

    推荐文章