.net - 使用 Web 服务公开 .NET DAL 是否会增加安全性?

标签 .net asp.net security architecture

目前,我的雇主在 3 台服务器上部署了一个 Web 应用程序。

  • DB - 没有公共(public)路线
  • Web 服务 DAL - 无公共(public)路由
  • Web服务器-公共(public)路由

  • 这样做的原因是这样的理论,即如果 Web 服务器受到攻击,它们不会直接到达 DB,而是到达 DAL 框。

    在我看来,由于 DAL 盒和 Web Sever 盒 - 都运行 windows/IIS - 如果公共(public)盒已被破坏,相同的漏洞可能会在 DAL 盒上起作用 - 因此我不认为这是真正的安全优势。

    我想建议我们删除中间机器并允许 Web 服务器直接连接到数据库。

    这个中框真的有好处吗?

    最佳答案

    让 Web 应用程序通过 Web 服务联系 DAL 层可以大大提高 的安全性。数据 .仍然有可能破坏 Web 应用程序,但是您刚刚使利用者几乎不可能访问数据库。

    如果您以这种方式设置它:

    web app --> |  DAL layer   |  database
    
    external    |  network     |  internal
                     DMZ  
    

    您可以设置您的网络路由,这样就不可能从外部直接到达位于 DMZ 中的 DAL 层,甚至可能位于网络的内部部分。如果您通过特定端口使用二进制编码执行 WCF,则可以设置防火墙规则以仅允许 Web 服务器通过该特定端口连接到包含 DAL 层的机器。这意味着如果您的 Web 应用程序受到攻击,攻击者将获得的最多是 WCF 端点的详细信息,除非从 Web 服务器发起攻击,否则他们将无法访问该端点。

    如果您仅使用 DAL 层中的存储过程等进一步混淆事物,那么攻击者在访问您的 DAL 时所能做的最多就是调用 Web 应用程序一直在使用的相同数据库功能。控制 DAL 层意味着他可以绕过您在 Web 服务器上进行的任何验证,但理想情况下,验证也应该存在于 DAL 层或数据库存储过程中(这是构建 WCF 服务的安全方式,您不需要并不总是知道您的 Web 服务将隐藏在公众视野之外,也许有一天需求会发生变化,并且 Web 服务将以一种任何人都可以调用它们的方式公开)。

    关于.net - 使用 Web 服务公开 .NET DAL 是否会增加安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030514/

    相关文章:

    c# - 检测用户 session 何时过期

    c# - 检查列表中的所有属性

    asp.net - 将 RSS pubDate 设置为 .NET DateTime 格式

    javascript - 我可以发送没有表格的帖子吗?

    c# - 使用Entity Framework 为什么要重新启动DbContext?

    asp.net - Telerik Ajax RadGrid 中的混合读/写和只读行?

    php - 使用asp.net应用程序在Azure虚拟目录中部署wordpress应用程序

    php - 使用 PHP 实现双向加密的最佳方法是什么?

    java - 如何在 HTML 字符串中转义 JavaScript,同时保持 HTML 不转义?

    c# - 找不到类型或命名空间名称,C# 初学者