【问题标题】:Can I encrypt Node.js TCP traffic with TLS so it's impossible to read?我可以使用 TLS 加密 Node.js TCP 流量,使其无法读取吗?
【发布时间】:2016-01-21 10:10:29
【问题描述】:

所以我目前有一个 node.js 应用程序,它从文件中读取我的网站用户 ips,并使用 geoip 在地图中为每个访问者位置放置一个点。

问题是,每次有新访问者来时,如果客户端使用wireshark或fiddler检查流量,客户端就可以看到通过websocket发送的消息。

显然显示用户 ips 是不可能的,所以我想知道使用 TLS 是否足以使这些信息不可读或无法从 javascript 代码中调试。

谢谢

【问题讨论】:

    标签: javascript node.js ssl https tls1.2


    【解决方案1】:

    信息被发送到用户的浏览器。浏览器必须能够对其进行解码才能使用它。浏览器还附带提供调试工具,允许用户检查正在发生的一切。因此,用户可以检查浏览器可以检查的任何内容。 不,你想要的东西是不可能的。如果信息是机密的,首先不要将它发送给任何客户。

    【讨论】:

    • 好吧,我的消息是直接从一个文件拖尾到服务器的,服务器获取这个 ip 以便客户端获取地图中的位置(因为地图 js 文件在客户端)我猜脚本处理所有这些的方式使得有必要将ip发送到客户端,因此geoip可以将其转换为地图上的正确位置。那么,TLS在这里不是一个选项吗?我认为这需要重新制作所有逻辑,以便地图中的点基于先前定义的发送给客户端的位置,而不是由 geoip 转换的 ip。
    • 这很简单:驻留在您服务器上的数据是私有的,您的服务器公开并通过网络发送的任何数据都必须被视为公开的。您可能必须将该工作移至服务器,以便服务器仅发送与制作地图相关的数据,而不会泄露底层 IP。
    • 我对此并不完全确定,那么 TLS 到底是什么?我刚刚完成了一些访问 TLS 节点应用程序的测试,但我无法准备好来自 websocket 的纯文本消息,我也不相信 TLS 可以轻松解密(尽管它的前身可以)
    • 这是一个 Transport 层加密,它可以防止第三方读取您和服务器之间的通信。显然,您和服务器都必须能够解密数据,否则首先发送任何数据是没有意义的。
    【解决方案2】:

    这将使嗅探传输中的数据或多或少变得不可能。

    在浏览器接收到数据后,它不会阻止人们获取您的 JS 并稍微调整它以记录数据。

    您无法向浏览器控制者隐藏您发送到浏览器的数据。

    【讨论】:

    • @Rdang — 然后它在从网络连接出来并进入浏览器时被解密,因为在浏览器中运行的 JavaScript 必须能够读取它(它不能如果它仍然是加密的,那就这样做)。
    • 是的,你当然是对的。 TLS似乎使websocket TCP数据无法从wireshark读取,但正如你所说,它可以被JS调试。
    【解决方案3】:

    最大的问题是你为什么要向浏览器发送 IP 和位置?要将标记放置在地图上,您只需要位置即可。

    如果您需要在客户端通过 IP 地址区分用户,您可以编写自己的哈希算法,将 ip 与预定义的字符串(秘密)连接起来。所以同一个IP的标识符总是相同的,但是没有对应的secret,IP是不可重构的。

    【讨论】:

    • 这似乎是个不错的建议 Torben 。您建议向服务器添加一个秘密?考虑到需要将 ip 发送到应用程序(客户端)来确定位置,这究竟是如何工作的,因为它为此目的依赖于 geoip?
    • @Rdang 让 服务器 进行 GeoIP 查找并仅将位置(没有 IP)发送给客户端有什么问题?!
    • @deceze,虽然我已经考虑过这种可能性,但它可能意味着完全改变应用程序逻辑,因为目前它使用 geo.ip 变量通过节点 geoip 模块和许多其他模块来定义位置部分代码也使用它。我试图确定这是我最好的选择,完全改造服务器和应用程序以按照您所说的方式执行或实施加密,同时保持服务器/应用程序当前逻辑
    • @Rdang 好吧,您的应用程序逻辑在这里的基本级别失败了,所以您必须重做它。如果您向客户端发送 IP 数据,那么客户端将(必须)读取它。时期。故事结局。没办法。
    • 我了解,TSL 提供了最大程度的加密,并且 TCP websocket 数据似乎无法从wireshark 或浏览器中读取,但我猜js 仍然允许解密它。那时可能只需要重新制作大部分内容,谢谢提醒
    【解决方案4】:

    TLS 有助于防止第 3 方攻击者截断流量。如果普通用户可以访问敏感信息,那么 TLS 毫无价值。它被称为传输层安全是有充分理由的。

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 2021-09-16
      • 2015-10-08
      • 2017-05-28
      • 2015-04-10
      • 1970-01-01
      • 2012-04-09
      • 2012-07-03
      • 1970-01-01
      相关资源
      最近更新 更多