在 JavaScript 中保护 JSON



我使用 jQuery Ajax 与脚本通信php然后它返回JSON 。然后,返回的JSON数组对象被分配给Javascript变量var myJSON = ajaxReturn;

通常,返回的JSON值在页面源代码或 Javascript 文件中不可见,因为它仅在运行时呈现。

但是当我打开工具时,Firebug并在控制台中调用该变量,例如:alert(myJSON);结果会弹出。我不希望它是,因为这是秘密数据。

  • 在 Javascript 端防止/保护JSON的最佳方法是什么?

发送到客户端的所有内容都是公开的,这是前端开发的本质,您无法更改它。如果用户决定偷看,就不可能对用户隐藏内容。

如果应用程序的目的是存储供客户端使用的JSON,则无法保护它不被访问。但是,您可以在收到JSON后进行所有修改,然后将其丢弃(而不是存储)。请记住,请求仍然可以被截获,只需使用浏览器开发人员工具的网络选项卡即可读取响应。

你如何处理JSON数据?您很可能正在提供 UI 控件或对 Web 服务的后续调用。因此,如果您要保护(即加密)JSON,您仍然需要客户端解密,因此您的JSON仍然容易受到攻击 - 因为您也可以执行alert(decryptedJSON)

如果您必须能够在浏览器中破译数据,则没有真正安全的方法来保护 JSON。

当然,您可以通过加密数据来保护数据,方法是使用 HTTPS 加密数据,或者在服务器端显式加密数据,然后使用客户端 JavaScript 对其进行解密。但这并不能保护它在浏览器中被查看。

更好的选择可能是仅在服务器上加密和解密(如果这适合你的方案)。因此,您可以从特定的 Web 服务调用中获取加密的 JSON 数据,然后将该数据馈送到下一个 Web 服务调用中,并在服务器上解密。这样,您的客户端 JavaScript 就不需要解密,从而使您的数据更安全。但是,如果目的是填充 UI,显然这不符合您的需求。

您刚刚错过了游戏,一旦您从服务器发送数据,它就超出了您的限制。因为像 firefox 这样的浏览器可以做任何事情,所以关键是在客户端上呈现的所有内容都是公共的。

即使有某种方法可以阻止 Firefox 在 firebug 中显示数据,任何人都可以轻松编写自己的 Web 客户端,伪装成 Web 浏览器,然后他们可以对数据做任何他们想做的事情。

如果你真的想隐藏json-data,那么不要使用ajax-json发送它。使用不同的术语或服务器端编程。

相关内容

  • 没有找到相关文章

最新更新