@
SoloCompany 这么看不起 HTTP? 建议你去研究一下 QQ 网页登陆(
http://id.qq.com/login/ptlogin.html).
另外前端的加密是用于解决 HTTP 请求中的数据在被别人获取之后的安全性问题的,
你所假设的 替换公钥, 篡改 HTTP 响应包的数据, 这种问题不是 前端 加密所要解决的事情, 这是 HTTPS 的事.
不能把这两者混为一谈.
@
iyaozhen @
qqmishi 说拦不住重放的,我也建议你去研究一下 QQ 的网页登陆.
QQ 网页上的登陆,在登陆时的流程如下:
在用户输入完账号之后, 会有一个 ajax 请求, 服务器会根据当前账号的登陆环境等数据, 决定是否要用户输入验证码,
在不需要输入验证码的情况下,服务器会自动返回一个验证码以及 salt.
在登陆时,提交的密码为:(注: QQTea 第一个参数为 key, 第二个参数为 要加密的内容)
RSA(QQTea(md5(QQ 密码 + 验证码) , md5(QQ 密码) + salt + 验证码长度 + 验证码))
验证码是一次性的, 如果对请求进行重放, 这个验证码肯定是不对的, 且你没有腾讯的 私钥,你也解不开这个加密后的内容.
QQTEA 的加密 key 是由用户的密码 和验证码构成了, 而这个密码是只有 用户自己和腾讯知道的.
从截获的 HTTP 请求中,你是找不到这个 KEY 的,所以就更谈不上解密了.
另外再重申一下, HTTP 协议下, 前端加密 是为了保证数据传输过程中在被第三方截获之后,不能破解(直接看到你的密码)/重放等行为的.
拿篡改 HTTP 响应来做为否定 前端 加密必要性, 这两者完全都不是一个层次的, 没有什么可比性.