如何防止最终用户看到通过浏览器控制台进行的网络调用

时间:2018-05-25 05:43:17

标签: javascript node.js ajax browser axios

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

4 个答案:

答案 0 :(得分:3)

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

所以答案是否定的

答案 1 :(得分:2)

当你去餐馆点餐时,服务员可以随后让你忘记上次的指示/订单吗?答案是否定的,与这个问题的答案相同。

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

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

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

引自互联网:

  

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

     

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

  2. 如果您不想加密或此机密信息是用户操作本身的结果,则在数据库中建立一个键-值对,其中的密钥可以公开给客户端(例如,用户名) )和价值是机密信息。因此,现在我们有了1-1映射,因此请使用从前端获取的密钥在数据库中从服务器端获取此机密信息。

我希望这会有所帮助。

祝你好运!