Rails 关于加密和 URL 的冲突

hxh1246996371 · 2015年09月11日 · 最后由 hxh1246996371 回复于 2015年09月15日 · 2356 次阅读

我们现在的移动 APP 想直接嵌入 PC 端的一个网页,比如 www.XXX.com

但是呢这个页面需要会员登录

所以可以这样构造 URL www.XXX.com?token=XXXXXXX

那么这个 token 值肯定不能使明文的,得通过加密,于是我用了一个 AES 包,

我将我的会员部分信息通过 aes 加密后得到了这样一个加密串 oDk6N21+t26f1PbvwIHtNw==$ZO319ZlmjsOMTzh+sF/hHg==

于是 url 就变成了 www.XXX.com?token=oDk6N21+t26f1PbvwIHtNw==$ZO319ZlmjsOMTzh+sF/hHg==

现在问题来了

我在后台尝试将 token 参数值获取到,但是获取的却是oDk6N21 t26f1PbvwIHtNw==$ZO319ZlmjsOMTzh sF/hHg==

某些字符被替换掉了,这样一来后台解密该字符串就得不到正确结果了,请问有解吗?

用 SSL。

URL 请好好编码。 + -> %2B -> +

#2 楼 @msg7086 不好意思,直接 URI::encode 就行了

用 SSL 就不说了。

建议隐藏的 form 自动 post 一下,或者通过加自定义的 http token 字段。业务上要是不能保障不会产生由用户引用的来自外站的资源,如图片视频甚至外链,在 URL 里直接带 token 或者 session id 都会有安全问题。比如用户 img 自己网站一张图,就可以去日志里数 referer 里的 token 了; 再比如用户 A 发了个自己网站的外链,B 点了,A 又可以去日志里看 referer 里的 token 了

#4 楼 @tnt 对的 我们主要是省事 手机 APP 直接嵌入了自己 PC 的某些页面

将 token 编码 url encode 编码后再传

需要 登录 后方可回复, 如果你还没有账号请 注册新账号