我被迫通过GET(查询字符串)将数据发送到另一台服务器。
For example: http://myserver.com/blah?data=%7B%22date%22%3A%222011-03-01T23%3A46%3A43.707Z%22%2C%22str%22%3A%22test%20string%22%2C%22arr%22%3A%5B%22a%22%2C%22b%22%2C%22c%22%5D%7D
这是一个JSON编码的字符串。然而,任何半脑的人都可以看到并解码它以获得基础数据。
我有没有办法在一个可以从服务器解密的更短的字符串中编码大量数据? (使用javascript)
我认为HTTPS实际上并没有解决这个问题,因为数据在uri中?
答案 0 :(得分:3)
HTTPS解析它 - 即使HTTP标头中的数据(包括URI)也受到保护,因为整个连接都是通过SSL通道进行的。
有一个例外:如果客户端使用代理,主机名将被公开,因为它在CONNECT请求中以明文形式传输。
答案 1 :(得分:2)
鉴于你的约束,我看到的唯一选择是使用public key / private key pair,就像PGP一样,其中公钥用于加密数据(然后你通过GET发送)和私钥用来解密它。那时你可能已经放弃了JSON(尽管你当然可以将数据设置为JSON,然后加密它,并将结果作为Base64编码的字符串或其他东西发送)。请注意,这并不能保护您免受虚假消息的影响(因为公钥是公共的),但它确实意味着人们在没有私钥的情况下无法读取传输中的数据。
答案 2 :(得分:0)
HTTPS确实是一种保护数据的解决方案。 它首先使用IP地址和端口创建与服务器的安全连接(通过TLS)。 - 然后通过此连接发送所有HTTP数据包加密。 (Is GET data also encrypted in HTTPS?)
网址长度的实际限制似乎约为1000个字符 (What is the maximum length of a URL in different browsers?)
并且有很多压缩片段...... (JavaScript implementation of Gzip)