iOS 开发者初学服务端,有几个小问题虚心请教各位同学,望无情鞭笞~

2015-07-01 15:59:57 +08:00
 xx314327475
0x00背景介绍

楼主是一个iOS开发工程师,最近有一个小创意,需要服务器编程,于是从头学习,在实践的过程中遇到一些逻辑和技术的问题,虚心请教大家。由于是新手,身边也缺乏服务器厉害的伙伴,所以下面的问题有可能很幼稚。
我的服务器的编程语言Java,服务器采用的框架为Spring(IoC和MVC)+MyBatis。
创意App需要实现一个用户注册的功能,和用户之间需要相互聊天的功能。

0x01加密数据实现方案

我们所考虑的安全方案类似微信开放平台的做法:

signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳 :当前时间确保在一定时间内,比如在60秒内这个请求才有效
nonce 随机数
echostr 随机字符串


问题1:我所理解的signature是一个 将token,timestamp和nonce通过sha1加密字符串,那么这个加密算法在iOS端,通过什么途经和技术进行最大程度的保密?

问题2:nonce和echostr其中有一个是用于确保请求在60秒内只处理一次,以免多次提交产生多次功能,那么他们其中的另一个是做什么的呢?

问题3:服务端要实现“确保请求在60秒内只处理一次”这种功能,有没有什么好的实现方案呢?

0x02用户注册实现方案

我们会在用户登陆成功的时候,返回一个token给用户,其作用也是用于验证后续的请求都是该登录用户发起的,这个token目前我看到两种方案。

第一种:有人说是用服务端的session的session id当做是token。
问题4:但是服务端的session是由生命周期,当session销毁了,难道要这么用户重新登陆么?如果不销毁,恐怕服务器内存会吃不消,你们是怎么考虑的?

第二种:用户登录后自己生成token,并且保存再用户表中,然后在服务器内存缓存中保存,用户近期访问的验证都在内存中完成验证,该内存缓存的生命周期由我自己控制。

问题5:这样的方案可行么?

问题6:大家有什么好的方案请提出来,让菜鸟学习下。


0x03参考文献

http://www.v2ex.com/t/166882
http://mp.weixin.qq.com/wiki/4/2ccadaef44fe1e4b0322355c2312bfa8.html
1721 次点击
所在节点    问与答
4 条回复
SHIMLY
2015-07-01 18:08:02 +08:00
估计大神看了你帖子 都不屑回复。就让我这个小菜鸟来试试
我也是搞ios的 服务器是用PHP写。
问题一 signature 不一定是sha1加密的 像腾讯这种大公司 估计内部有自己的加密算法。至于"那么这个加密算法在iOS端,通过什么途经和技术进行最大程度的保密? "没明白 是啥意思
问题二 问题三 没看懂

token 一般我都是 根据用户登录时候的 用户名、密码、时间戳、有时候也有经纬度 加密 生成一个token。

服务器端 也不是特别懂。答案仅供参考。
hdbean
2015-07-02 09:25:09 +08:00
现在好多APP都是三方授权登陆,没有自己的一套用户系统
xx314327475
2015-07-02 12:48:27 +08:00
@hdbean 我是想自己做这么一套用户系统,感谢回复
xx314327475
2015-07-02 12:48:41 +08:00
@SHIMLY 感谢回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202511

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX