【问题标题】:How to prevent end user from seeing network calls made through browser console如何防止最终用户看到通过浏览器控制台进行的网络调用
【发布时间】:2020-06-17 20:44:48
【问题描述】:

我需要在所有 ajax 调用中发送一个特定的标头参数,这是一个非常机密的信息。我不希望最终用户看到在任何浏览器的网络选项卡中发出的任何请求。有什么办法可以预防吗?或者是否可以直接从不通过浏览器的节点服务器进行 ajax 调用?

【问题讨论】:

  • 如果正在发送/接收信息(客户端),则始终可以监控/查看。
  • 这个“非常机密”“header param”从何而来?如果不是来自浏览器,那么当然,只需使用服务器端网关,否则,您的用户已经拥有它,甚至在您通过 ajax 发送它之前。
  • 您是否担心发送的敏感数据?或者用户看到你正在发送一些东西的事实?用户是否仅限于检查控制台,或者他也会检查 javascript 代码?因为如果您只关心控制台和那里看到的敏感信息,您可以使用公钥对其进行加密,并使用私钥在服务器端对其进行解密。
  • 是的,我使用加密/解密作为最后一个选项

标签: javascript node.js ajax browser axios


【解决方案1】:

在客户端进行的任何调用都无法隐藏,因为它是网站的“客户端”端。即使您成功地将其隐藏在浏览器中,任何软件都可以使用网络嗅探器/监视器等工具对其进行监视,例如 WireShark。

所以答案是否定的

【讨论】:

  • 我认为这可以添加为评论而不是答案
  • @Tej 不,这完全可以作为答案。它回答了这个问题;答案是“你不能”。
【解决方案2】:

当你去餐馆点东西时,服务员会不会让你忘记你最后的指示/订单?答案是否定的,与这个问题的答案相同。

这一切都始于客户端向服务器发出请求,因此客户端是整个交互的驱动力。服务器只是按照客户端的指令服务(并且恶意地自己做一些额外的工作,比如审计、数据库更新、cookie 添加等)。

因此,“服务器”无法限制客户端查看自己的指令。

只是不要直接通过标头发送敏感信息。通过您的客户端代码加密它们并将它们添加到 cookie 或任何其他 HTTP 标头中。

引用自网络:

客户端/服务器架构是生产者/消费者计算 服务器充当生产者,客户端充当生产者的架构 消费者。服务器容纳并提供高端、计算密集型 为客户提供按需服务。这些服务可以包括 应用程序访问、存储、文件共享、打印机访问和/或 直接访问服务器的原始计算能力。

客户端/服务器架构在客户端计算机发送一个 通过网络连接对服务器的资源或处理请求, 然后处理并交付给客户。一台服务器计算机 可以同时管理多个客户端,而一个客户端可以 一次连接到多个服务器,每个服务器提供不同的集合 的服务。以最简单的形式,互联网也是基于 客户端/服务器架构,其中 Web 服务器同时服务于许多 拥有网站数据的用户。

【讨论】:

    【解决方案3】:

    永远不要相信客户。曾经。永远不能。不管你做什么假设它被破解了。黑客拥有所有工具,可以完全控制客户端以及在其上运行的所有软件。假设他们已经编写了自己的网络堆栈、自己的 TLS 实现、自己的浏览器、自己的操作系统……

    如果您需要确保其安全,请将其保存在您的服务器上。如果您需要传达“特权”信息(假设您记得一旦您将其发送给客户端,他们就可以访问它)不要,在您的服务器上对其进行标记并将其发送给他们。如果您正在生成令牌,请确保它们非常随机且完全不透明 - 不要加密令牌中的任何内容,因为您应该假设它们也可以破解它,无论您认为您使用的库有多安全(假设它总有一天会被破解的)。

    【讨论】:

      【解决方案4】:

      切勿在客户端公开机密数据。

      1. 最佳做法是在服务器端加密您的机密数据,将其发送到客户端,并在客户端将您返回给您时在服务器端解密。

      2. 如果您不希望加密或此机密信息是用户操作本身的结果,则在数据库中创建一个键值对,其中键是可以暴露给客户端的东西(比如说) 和 value 是机密信息。因此,现在我们有 1-1 映射,因此使用我们从前端获取的密钥从数据库中获取服务器端的机密信息。

      我希望这会有所帮助。

      祝你好运!!

      【讨论】:

        猜你喜欢
        • 2019-11-25
        • 2011-02-09
        • 2022-06-23
        • 2013-12-20
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多