0

我使用 jQuery Ajax 与php脚本对话,然后它返回JSON. 然后,将返回的JSONArray Object 分配给 Javascript 变量var myJSON = ajaxReturn;

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

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

  • 防止/保护JSONJavascript 端的最佳方法是什么?
4

4 回答 4

2

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

于 2013-01-28T09:15:53.667 回答
1

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

于 2013-01-28T09:16:48.673 回答
1

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

如果您必须能够解密浏览器中的数据,那么没有真正安全的方法来保护 JSON。

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

如果适合您的情况,更好的选择可能是仅在服务器上加密和解密。因此,您可以从特定的 Web 服务调用中获取加密的 JSON 数据,然后将该数据提供给您的下一个 Web 服务调用,并在服务器上对其进行解密。这样一来,您的客户端 JavaScript 就不需要解密,从而使您的数据更安全。但如果目的是填充 UI,显然这不符合您的需求。

于 2013-01-28T09:17:58.063 回答
0

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

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

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

于 2013-01-28T09:23:36.480 回答