繁体   English   中英

Javascript:隐藏/使客户对象难以理解

[英]Javascript: Hiding/Making it difficult to understand client objects

是否有任何已知的“隐藏”方法,或者只是使用户难以看到和理解我的客户端对象(存储为JSON对象)? 我想要的原因是因为我不希望其他人简单地复制我的数据。

考虑到我从服务器端获取数据的事实,而不仅仅是将其按原样获取到JSON对象,我想我可以添加一些算法来混合服务器上的数据,而且只有我知道如何插入它回到客户端。

我当然知道这不是一个100%隐藏的解决方案,因为在客户端上所有内容仍然可见。

我希望我的问题表达得足够理解我的目标。

我猜您只想编码json对象并在客户端存储/使用它。

如果我的理解是正确的,则可以考虑以下方式。 这个想法是对来自服务器的数据进行编码,然后在客户端进行解码。 尽管这种方式对于用户而言并不是完全不可见的,但是在最小化脚本之后,要获取解码的数据将花费很多时间和精力,而不仅仅是将json存储在客户端变量中。

例如, 在服务器端:

var json = {
  name: 'Alex',
  age: 25,
  location: 'LA'
};

function utf8_to_b64(str) {
  // or something equivalent in your lang. Here we use nodejs
  return new Buffer(str).toString('base64');
}

var json_str = JSON.stringify(json);
// "{"name":"Alex","age":25,"location":"LA"}"

send_to_client(utf8_to_b64(json_str));
// "eyJuYW1lIjoiQWxleCIsImFnZSI6MjUsImxvY2F0aW9uIjoiTEEifQ=="

客户端:

function b64_to_utf8(str) {
  return decodeURIComponent(escape(window.atob(str)));
}

var got_from_server = "eyJuYW1lIjoiQWxleCIsImFnZSI6MjUsImxvY2F0aW9uIjoiTEEifQ==";

var decoded = b64_to_utf8(got_from_server);
// "{"name":"Alex","age":25,"location":"LA"}"

var boom = JSON.parse(decoded);
// get our 'real' json back!

希望这可以帮助

参考: 来自MDN的Base64编码和解码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM