美文网首页
登录模块的设计

登录模块的设计

作者: 梦中人在梦中 | 来源:发表于2016-11-21 09:30 被阅读163次

  最近做完系统登录模块的重构,登录这块的核心在于安全的控制。下面通过本文来总结一下登录模块的设计实现,以及哪些方面需要注意。

用户创建

  • 密码保存需要做不可逆加密。即密码不能明文保存且即使是内部技术人员也无法得到真实密码,常见的加密方法有MD5,SHA系列算法,如果对加密算法不太了解的可以移步<a href="http://muchstudy.com/2016/09/04/%E5%AE%89%E5%85%A8%E7%AE%97%E6%B3%95%E6%A2%B3%E7%90%86/">这里</a>。
  • 密码强度限制。不允许使用弱口令,比如跟用户生日相等。
  • 手机、邮箱验证。方便后续找回密码。

用户登录

需要注意的问题

  • 使用验证码。增加暴力破解的成本。
  • 登录错误次数限制,一定时间后自动解锁,彻底堵死暴力破解。
  • 关键cookie设置HTTPOnly属性,防止xss盗取用户cookie。
  • 保证密码在网络传输中的安全。启用HTTPS,或使用RAS加密。请求登录界面时,生成公钥与私钥,私钥放在服务器端,密码传输前,使用公钥加密,服务器端收到密文后使用私钥解密密文得到用户输入的真实密码。
  • 集群状态下,采用session共享的方式实现SSO时,在session上记录的登录状态信息需要可序列化。
  • 页面跳转时使用服务器端跳转,request.getRequestDispatcher().forward()。尽量不要使用response.sendRedirect(),因为每次redirect都会触发客户端304,重新再次发起一次HTTP请求。

记住密码

可以考虑这样去实现记住密码功能:cookie中需要保存如下3个值
username:用户的登录名
token:使用公钥加密过的用户密码
sequence:登录序列(防重放攻击。如果自动登录的该字段与服务器的不相符时,则证明用户在其他地方登录过。)

  当勾选记住密码登录时,在服务器端保存当前的私钥、生成一个随机的登录序列(UUID)保存起来。同时,把用户名、登录传输过来的已经用公钥加密的密文、新生成的sequence保存到cookie中。下次用户请求登录页面时,从cookie中取得用户名放到用户名的输入框中,任意字符串放到密码框中,继续勾选上记住密码框。这个时候只需要输入验证码即可点击登录按钮。服务器端,判断出本次登录是记住密码登录,首先验证cookie中的sequence是否跟服务保存的一致,如果不一致,则登录失败。一致时,取出私钥解密从cookie中拿到的token,得到真实密码,接着按照常规登录流程完成登录验证。

密码变更

  • 修改密码需要提供原始密码
  • 相关信息在网络传输中需保证加密传输
  • 找回密码功能可以考虑使用手机验证码,邮件链接实现。另外,还可考虑提供用户在本系统中的留痕供用户选择(比如什么时候注册、最近做了什么操作等),从而识别出真正的用户。

日志记录

  • 记录用户的登录日志。可记录下登录时间、退出时间、IP等信息,分析过往日志,甄别出异常登录并提醒用户。
  • 记录用户登录失败日志。限制登录失败重试次数,防止暴力破解。

服务器相关

  有时应用的安全部分做得再好,也抵不住服务器直接被攻破,所以运行应用的服务器的安全也需要特别注意。

  • 服务器访问日志(建议开启)
  • 可疑用户
  • 可疑进程
  • 可疑服务
  • 操作系统日志(日志最大大小) 定期备份

相关文章

  • 登录注册修改密码

    1.为什么要设计登录注册修改密码模块 2.登录注册修改密码模块分类 3.如何设计登录注册修改密码模块 4.登录注册...

  • React实战博客1---登录模块

    前端模块 1.登录窗口设计 ​ 登录窗包括了3个模块( 登录, 注册, 重置 ), 通过嵌套路由切换状...

  • 登录模块的设计

      最近做完系统登录模块的重构,登录这块的核心在于安全的控制。下面通过本文来总结一下登录模块的设计实现,以及哪些方...

  • 2018-09-01-day10作业-学生信息管理系统

    1.主界面模块 2.注册模块 3.登录模块 4.文件操作模块 5.学生模块 6.文件设计

  • 用户注册/登录模块实践

    用户注册/登录模块实践 前言 最近负责的网站项目正式进入开发阶段,首先面临的当然就是用户登录模块的设计与实现了。说...

  • 「登录注册模块」设计

    在互联网世界,用户是一切,如果用户都只是匆匆过客那么很难在产品中形成固定的用户群,在用户行为统计上也很难形成有价值...

  • Java 登录模块设计

    登录流程 前端登录传输用户名和md5加密后的密码 后端对密码在进行md5加密,或者使用md5加密的密码 + id ...

  • iOS登录模块的设计

    1.概述 登录模块几乎是一款APP必须的模块, 通常来说, 在进行一些例如评论、收藏、购买等的操作之前, 都要判断...

  • APP登录设计,你真的会吗?

    大多数情况下,登录模块是产品设计中不可避免的一环,在设计之前必须先理清登录设计逻辑。目前常见的登录方式主要有: 1...

  • 原型设计第一步--注册登录

    今天我们来聊聊关于原型设计基础,也是大部分产品设计的开始--登录注册模块。 ...

网友评论

      本文标题:登录模块的设计

      本文链接:https://www.haomeiwen.com/subject/eaxupttx.html