我使用 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发送它。使用不同的术语或服务器端编程。