新人开车——认证与会话管理

Posted 黑蝴蝶sec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新人开车——认证与会话管理相关的知识,希望对你有一定的参考价值。

一、概念

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

  2、认证实际上就是一个验证凭证的过程。

  3、如果只有一个凭证被用于认证,则称为“单因素认证”;如果有两个或者多个凭证被用于认证,则称为“双因素认证”或者“多因素认证”。一般来说,多因素认证的强度要高于单因素认证。

二、说说密码

  1、密码是最常见的一种认证手段,持有正确密码的人被认为是可信的。“密码强度” 是设计密码认证方案时第一个需要考虑的问题。

  2、黑客们常用的一种暴力破解手段,不是破解密码,而是选择一些弱口令,比如123456,然后去猜解用户名,知道发现一个使用弱口令的账户为止。由于用户名往往是公开的信息,攻击者可以收集一份用户名的字典,是的这种攻击的成本非常低,而效果却比暴力破解密码要好很多。

  3、密码的保存也有一些需要注意的地方。一般来说,密码必须以不可逆的加密算法,或者是单向散列函数,机密后存储在数据库中。将明文密码经过哈希后(比如MD5或者SHA-1)再保存到数据库中,是目前业界比较普遍的做法——在用户注册时就已经将密码哈希后保存在数据库中,登录时验证密码的过程仅仅是验证用户提交的“密码”哈希值,与保存在数据库中的“密码”哈希值是否一致。目前黑客们广泛使用的一种破解MD5后密码的方法是“彩虹表”。彩虹表的思路是收集尽可能多的密码明文和明文对应的md5值。这样只需要查询md5值,就能找到该md5值对应的明文。为了避免密码哈希值泄漏后,黑客能够直接通过彩虹表查询出密码明文,在计算密码明文的哈希值时,增加一个“salt”。“salt”是一个字符串,它的作用是为了增加明文的复杂度,并能使得彩虹表一类的攻击失效。

  salt的使用如下:

    MD5(username+password+salt)

  salt应该保存在服务器端的配置文件中,并妥善保存。

三、session与认证

  当用户登录完成后,在服务器端就会创建一个新的会话(session),会话中会保存用户的状态和相关信息。服务器端维护所有在线用户的session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个session,浏览器需要把当前用户持有的sessionID告诉服务器。常见的做法就是把sessionID加密后保存在cookie中,因为cookie会随着HTTTP请求头发送,且受到浏览器同源策略的保护。

  session劫持就是一种通过窃取用户sessionID后,使用该sessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的有效session。如果sessionID是保存在cookie中的,则这种攻击可以称为cookie劫持。

  sessionID除了可以保存在cookie中外,还可以保存在URL中,作为请求的一个参数。但是这种方式的安全性难以经受考验。 在生成sessionID时,需要保证足够的随机性,比如采用足够强的伪随机数生成算法。现在的网站开发中,都有很多成熟的开发框架可以使用。

四、谈谈session  fixation攻击

  举例:

    认证前的url是  :  http://bbs.xxxx.com/wap/index.php?action=forum&fid=72&sid=2iu2pf

  其中,sid是用户认证的sessionID。用户登录后,这个sid没有发生改变,因此黑客可以先构造好此URL,并诱使其他用户打开,当用户登录成功后,黑客也可以直接通过此URL进入用户账号。

  解决session fixation的办法是: 在登录完成后,重写sessionID。

五、谈谈session 保持攻击

  一般来说,session是有生命周期的,当用户长时间为活动后,或者用户点击退出后,服务器将销毁session。如果session一直不销毁的话,攻击者就能通过此有效的session一直使用用户的账号,成为一个永久的“后门”。攻击者可以通过不停地发起访问请求,让session一直活下去。(登录进用户的账号,不停地刷新页面)

  如何对抗session保持攻击呢?

  (1)在一定时间后,强制销毁session

  (2)当用户客户端发生变化时(比如用户的IP、useagent等),要求用户重新登录。

  (3)同一个用户可以同时拥有几个有效的session。

六、单点登录(sso)

  它希望用户只需要登录一次,就可以访问所有的系统。从安全的角度来看,sso把风险集中在单点上,这样做有利有弊。

  目前互联网上最为开放和流行的单点登录系统是OpenID。OpenID是一个开放的单点登录框架。在用户登录网站时,用户只需要提交他的OpenID(就是用户唯一的URI)以及OpenID的提供者,网站就会将用户重定向到OpenID的提供者进行认证,认证完成后再重定向回网站。

七、总结

  认证的手段是丰富多彩的。在互联网中,除了密码可以用于认证外,还有很多新的认证方式可供使用。我们也可以组合使用各种认真手段,以双因素认证的方式,提高安全强度。

  在WEB应用中,用户登录之后,服务器端通常会建立一个新的session以跟踪用户的状态。每个session对应一个标识符sessionID,sessionID用来标识用户身份,一般是加密保存在cookie中。有的网站也会将session保存在cookie中,以减轻服务器端维护session的压力。围绕着session可能会产生很多安全问题,这些问题都是设计安全方案时需要考虑到的。

 

以上是关于新人开车——认证与会话管理的主要内容,如果未能解决你的问题,请参考以下文章

会话与会话工厂之间的差异 - 休眠?

《华为HCIE安全认证》学习笔记 | 状态监测与会话表技术

网络安全——服务端安全(注入攻击认证与会话管理和访问控制访问控制加密算法与随机数Web框架安全应用层拒绝服务攻击DDOS等)

分布式系统认证方案探究

用户身份验证与会话身份验证有何不同

5G核心网技术基础自学系列 | 与会话管理相关的策略和计费控制