1
isCyan 2017-05-06 01:50:21 +08:00 via Android
加密当然没什么大用,用户认证啊,最简单的 HTTP Basic Auth 或者复杂点 Header 里面传内容用 Key 的 HMAC 签名都可以,甚至用户登录留下个 Cookie 都有用
|
2
tlday 2017-05-06 03:39:35 +08:00 via Android 3
你的重点不对。不过我也不是专业的后端,浅谈几点拙见,如果有误烦请楼下不吝指出。
https 是为了防止中间人攻击,信息的发送者和接收者其实都是知道发送的是什么东西的。所以只是保证传输过程的安全可靠。(比如某个人架了免费代理,不知情的用户用了这个代理,数据报在传输过程中被记录,那么这个人就可以伪造为这个不知情的用户来窃取这个用户的信息等等,https 可以避免这种情况) 你要明确你想防御的对象是谁,是防止中间人窃取了用户 A 的"令牌"伪造成用户 A 窃取用户 A 的信息?那 https 可以很好的解决这个问题。 但是如果你想防御的是 A 用户根据接口参数猜出参数意义借以窃取 B 用户的信息,那么你要在服务端作鉴权,A 用户不应当有访问 B 用户信息的权力。 至于剩下你说的那些,无论是 session 还是 token 都只是鉴别 A 用户确实是 A 用户的"令牌",都有过期时间。 你想考虑的这种情况说,如果是用户自己的浏览器或系统,软件,被 crack,导致 cookie 等信息泄露,那么你其实能做的不多。唯一能做的就是类似(异地登录短信提醒,ip 突然变更要求重新输入密码)这种措施来提醒用户你的客户端环境不安全,可能被黑了,并提醒用户及时更换密码,更换密码的同时把所有 token 过期掉等等来最大程度降低用户损失。 oauth2.0 是开放用户部分信息给第三方使用的一种三方鉴权协议,一般用作第三方登录这种,可能并不符合你的需求。如果你想看一些比较好的实现,可以参考 github,facebook 之类的。 |
3
wangxiaoer 2017-05-06 13:13:42 +08:00
很奇怪你的需求,不知道你到底是想隐藏请求的参数、请求的内容还是响应的内容?如果是想隐藏请求的数据,我觉得你的需求很奇怪,这些都是明码啊,怎么隐藏?
至于你说的“比如根据用户名查询用户的信息,https 还是能看到接口请求的内容,别人也能使用这个接口查别人的信息”,更不理解了,难道你们的查询接口不做验证的吗?如果从业务上讲本身就是开放的 api,那还隐藏什么?如果业务上不是对所有人开放的,那就加验证、权限判定啊! |
4
v1024 2017-05-06 14:12:34 +08:00 via iPhone
自己「发明」协议
|
5
sensui7 2017-05-06 22:19:15 +08:00
HttpOnly, Secure 的 jwt token 还怕丢?? 那我看, 还是局域网吧
|