【问题标题】:Are WebSockets reinventing the wheel?WebSockets 是在重新发明轮子吗?
【发布时间】:2011-04-29 20:26:23
【问题描述】:

如果我错了,请纠正我......

  1. 我们引入了防火墙以限制其公司员工访问互联网(并间接“保护”家庭用户)
  2. 现在 WebSockets 允许应用程序通过端口 80 进行任何通信。

有什么意义?防火墙应该从一开始就没有被发明吗? 如果如我所料,防火墙开始阻止所有 Websockets 通信,那么首先引入它们有什么意义?

更新:我的错误。我的错误印象是 WebSockets 允许在端口 80 上进行任意端口转发隧道。但事实并非如此。 WebSockets 专门处理通过端口 80 打开全双工通信。

【问题讨论】:

    标签: networking html websocket


    【解决方案1】:

    WebSockets 的设计目的不是为企业安全管理员提供方便,它们旨在提供快速的浏览器 服务器通信;因此,您提出这个问题的观点是无效的; WebSocket 非常适合它们的预期用途,而且大多数网络都不受公司防火墙的影响。

    现在许多公司都允许将任意数据加密隧道传输到互联网,所以这并不是什么新鲜事。通过 WebSockets 泄露数据的风险和必要的对策仍将取决于个人安全管理员根据他们对员工的信任程度以及他们有权访问的公司数据的敏感性来判断。

    【讨论】:

    • +1,略显不足:WebSockets 将提供延迟意义上的快速连接。 WebSockets 在带宽方面不会比 HTTP 有显着优势(较小的开销对于大传输可以忽略不计)。
    • WebSockets 不允许您通过端口 80 与任意端口进行隧道通信吗?也就是说,WebSockets 不会将通信重定向到通常被防火墙阻止的本地端口吗?
    • @Gill。不比 AJAX 已经做的多。这就是 WebSockets 握手的目的,以强制执行跨域安全限制。页面上的 Javascript 可以请求与任意主机的连接(就像 AJAX 请求一样),但 Javascript 不能伪造原始标头(只有浏览器设置)。网络内的 Web 服务器(运行浏览器的地方)可以拒绝非本地来源。由于类似 HTTP 的握手(就像 AJAX 请求一样),网络内的其他服务将拒绝连接周期。
    【解决方案2】:

    我们引入了防火墙以限制其公司员工访问互联网(并间接“保护”家庭用户)

    没有引入防火墙来限制网络内部的活动(尽管可以这样使用它们)。创建防火墙是为了防止来自网络外部的入侵。

    现在 WebSockets 允许应用程序通过端口 80 进行任何通信。

    应用程序(非网络)总是能够通过端口 80 传输任何他们想要的东西,WebSockets 所允许的只是使用 Javascript 在它和服务器之间发起全双工连接。

    我想我真的不明白为什么你会认为公司网络会防火墙 WebSocket 流量。 WebSocket 所做的只是允许 Web 浏览器和服务器之间的高效全双工连接。

    【讨论】:

    • WebSockets 不允许您通过端口 80 与任意端口进行隧道通信吗?也就是说,WebSockets 不会将通信重定向到通常被防火墙阻止的本地端口吗?
    • @Gili:据我所知,没有提供任意端口转发。我相当确定它只允许服务器和浏览器之间的全双工连接。
    • 我的错误。感谢您澄清端口转发。
    【解决方案3】:

    首先,在标题中,您暗示 websockets 可能只是对先前想法(实际上是)的低级重新实现。然后,在正文中,您将切入防火墙,而不仅仅是 websockets 可以绕过它。

    所以,是的。防火墙不应该被发明出来,发明者应该预见到 websockets 的发明,或者任何使用可信传输的东西,在这个例子中是 80 端口。

    回答您的实际问题,websocket 只是您网络上另一种不同类型的抽象层。根据相关软件,它们很可能无法替代常规套接字。

    重新发明轮子是开发人员最喜欢的消遣时间,尤其是非开发人员转为 Web 开发人员。我想它减轻了无端自卑的痛苦,因为意识到基本的计算机知识与编程能力不同。

    【讨论】:

    • -1 暗示防火墙不应该被发明出来。
    • -1 用于暗示 WebSockets 是已经存在的东西的低级实现,而没有引用以前的等效解决方案,也没有给出和证据。如果您暗示套接字是一项卓越的先前发明,那么您是否尝试过从浏览器中创建原始套接字?你不能。即使使用 Flash,您仍然必须在目标上运行策略服务器以确保源安全(websockets 与握手内联)。可用的最相似的东西,彗星,是更高的开销、更高的延迟和更复杂的使用。
    • @kanaka,我相信人工白痴是在说 WebSockets 是对普通套接字的重新发明,与仅仅让我们访问普通套接字相比,引入 WebSockets 并没有明显的优势。
    • @Gill,来自浏览器的原始套接字连接没有跨域验证 (CORS) 和没有保护性握手是完全不行的。想象一下 Javascript 可以启动原始套接字连接的场景:有人将恶意 Javascript 广告注入 cnn.com、yahoo.com(或其他任何地方)。 Javascript 连接到您公司的私有 Intranet、文件服务器,选择您的私有服务。没有更多的秘密。 WebSockets 为浏览器提供了原始套接字的几乎所有优点(低延迟、双向),而不会在 Internet 安全域中打开德克萨斯大小的漏洞。
    • @artificialidiot:我看到了,想知道这是不是讽刺,然后希望有人在问答网站上发布答案,提问的人想要一个真实和真实的答案,没有讽刺的话明确说明。
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 2011-03-02
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2011-08-16
    相关资源
    最近更新 更多