App用户身份验证
本文最后更新于 2937 天前,其中的信息可能已经有所发展或是发生改变。

安全问题

现在的移动互联网应用,大多是通过客户端带上数据请求不同动作的api来实现不同业务要求的。即是说,通过抓包就可以获取到请求的api和发送、接收到的数据。如果没有一定的安全防范意识,很容易被攻击。
这里推荐一款叫fiddler的抓包工具,使用方法自行搜索。下面是对车来了App的抓包截图:
没有使用https,所以数据完全暴露出来了。可以看到我经常坐的19路其中一辆公交还有12分钟到站。

用户身份验证

Web应用可以使用session来保存用户会话,App可没有这东西。
下面是一个很致命的设计:


只要带上userId,服务端就会为该用户执行操作。就是说任何人都可以假冒123这个用户执行一些操作。
嗯,打死都不承认上面这种设计我曾经写过。

其实参考session的实现原理就可以解决这个问题。大多数情况,Session都是结合客户端的Cookie来实现的。
Web中Session的实现
1.用户的登录名、密码校验正确后,我们通常会将用户的一些信息存入到Session中。
2.此时服务端会生成一个全局唯一标识SessionID来标记这个用户生成的Session,并将该SessionID通过Set-Cookie回应给浏览器。
3.So,浏览器访问该网站的其他页面时只要带上了这个SessionID,服务端就知道它面对的用户存储在了哪个Session中,程序便可取出来用。

如何实现

那么移动端App怎么玩?与Web的Session是一样的,只不过我们要自己实现了。

简单实现
1.用户名密码校验无误后,生成UUID,存储到该用户记录中对应的字段中
2.将该UUID返回给前端(Android、iOS等)
3.App请求其他需要用户登录的接口时,带上该字段
4.服务端校验无误后方可继续执行业务

进一步完善以便实现其他需求的话,可以在生成UUID的同时,记录下用户ip、设备ID、过期时间等~
如:发现设备ID与登录时的不同,要求其重新登录~

当然,校验技术不可能是完美的,Hacker们有太多的方法骗过服务端。作为开发者,能做的是尽可能地提高验证水平和Hacker的破解成本;而作为用户,不要总想着蹭网啦,免费或虚假Wifi的后面可能有人正抓着包…

评论

  1. Trity
    Windows Chrome
    8年前
    2016-4-09 11:59:55

    那我是不是在登录的时候进行抓包,把返回的相关信息进行捕捉,得到上面的Auth之后,我也可进行想要的操作了?

    • foam
      foam 博主
      Windows Chrome
      8年前
      2016-4-12 1:18:34

      这里的auth是一个身份凭证的抽象,理论上拿到身份凭证自然是可以进行操作的啦~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇