• 认证与会话管理


    认证与会话管理

    认证和授权,实际上是两件事情,但是很多人会混淆这两个概念。

    • 认证的目的是为了认出用户是谁。
    • 授权的目的是为了决定用户能够做什么。

    形象比喻

    • 用钥匙开门进屋,钥匙就是凭据。

    • 进屋能做什么,不能做什么,就是授权。房间主人可以卖房等,租客只能住。

    问题:持有钥匙的人一定是主人吗?

    • 钥匙丢了,并被其他人捡到
    • 钥匙被复制了

    总结:

    • 认证实际上就是一个验证凭据的过程。
    • 如果只有一个凭证被用于认证,称之为单因素认证。
    • 如果有两个或多个凭证被用于认证,称之为双因素或多因素认证。
    • 多因素认证强于单因素认证,但会使用户感觉麻烦。

    密码策略

    • 长度(最好在16位以上)
    • 组合(大写字母、小写字母、数字、其他特殊符号混合,+-*/~#$%&()=?<>';等)
    • 不连续(123456,QWERRT...)
    • 不重复(111111,AABBCC)
    • 不用特殊数据(生日、姓名、学号,手机号等)
    • 独立(不同网站使用不同密码)

    对于网站后台,需要将用户密码经过特殊加密再进行保存,即使数据泄露,也增加了对方攻击成本。

    彩虹表:明文和hash值对应的表

    对抗彩虹表,加盐(密码中参杂自定义的(随机)字符)

    多因素认证

    • 动态验证码
    • 数字证书
    • 问题答案(密保问题)
    • 安全盾
    • 人脸识别
    • ......

    Session与认证

    密码与证书等认证手段,一般仅用于登录的过程,当用户登录完成后,用户访问网站的页面,不能每次都要输入账号密码,因此,需要替换一个对用户透明的凭证,这个凭证,就是SessionID。

    当用户登录完成,在服务器端就会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户即可,为了告诉服务器是哪个用户,浏览器需要将当前用户持有的SessionID告知服务器。

    最常见的做噶就是把SessionID加密后保存在Cookie中,因为Cookie会随着HTTP请求头发送,且收到浏览器同源策略的保护。

    但如果SessionID一旦在生命周期内被窃取,就等同于账户失窃(XSS、Sniff、木马窃取)。

    在手机操作系统中,如果手机浏览器不支持Cookie,只能将SessionID作为URL的一个参数用于认证。

    Session Fixation攻击(重放攻击)

    A卖车给B,A藏了一把钥匙没有给B,B如果没有换锁,A还是能开走车。

    这个没有换锁而导致的安全问题,就是Session Fixation问题。

    Session保持攻击

    • Session失效时间长
    • 用户登陆后刷新页面,Session的过期时间就重新计时
    • Session保存在Cookie中,通过修改Cookie中的过期(expire)时间来保持状态。

    单点登录(SSO)

    Single Sing On,用户只需要登录一次,就能访问所有的系统。

    优点:方便

    缺点:一旦被攻破,所有使用单点登录的系统都将沦陷。

    解决:敏感系统再单独使用额外的验证机制。

  • 相关阅读:
    单例模式
    工厂方法模式
    简单工厂模式
    LoadRunner11.0下载及安装链接~(By网络)
    lombok 介绍及基本使用方法
    360浏览器拦截弹窗,window.open方式打不开新页面
    js生成二维码
    Filter过滤器的写法
    JavaScript获取浏览器类型与版本
    如何截取date类型的年月日部分?
  • 原文地址:https://www.cnblogs.com/liuhuan086/p/14805670.html
Copyright © 2020-2023  润新知