­

失效的身份认证和会话管理

什么是身份认证❓

常见的身份认证可见于以用户名密码的形式进行系统登录,在安全性较高的情况下,还会伴有很多登录认证方式。

认证方式又有很多种,EX:静态口令、OTP(动态口令)、AD域认证、证书、验证码等。

身份认证的结果往往是获得一个令牌,通常放在Cookie中,之后对用户身份的识别根据这个授权的令牌进行识别,而不需要每次都要登陆。

什么是会话管理❓

客户端不断地向服务端发送请求并获得响应的一系列交互过程,请求并建立关联的过程被称为会话管理。

 

 

 在服务端第一次接收到客户端的请求的时候,会产生一个初始化的会话,并分配给该会话一个标识符。在后面的请求中,客户端的请求都必须包含此标识符,拥有此标识符,服务端才会把新的请求和对应的会话联系起来。

什么是Cookie❓

其实cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cookies和其他电脑上的cookies是不一样的;cookies不能被视作代码执行,也不能成为病毒,所以它对你基本无害。

什么是失效的身份认证和会话管理❓

原理:程序员再开发Web程序是,开发人员往往只关注Web程序所需要实现的功能。常常会建立自定义的认证和会话方案。但是要正确的实现这些方案是很难的,产生的结果就是在用户:退出、密码管理、超时重登、记住我、密码找回、账户更新等方便出现很多漏洞。因为每一个功能的实现方式都不同,所以想找出这些漏洞有时就很困难。

危害:这些漏洞的存在,就会使得恶意用户有机可乘,可能会被窃取或操纵用户的会话和Cookie,进而模仿网络上的合法用户。

 

如何判断是否存在失效的身份验证和会话管理❓

首先需要明白,最需要保护的数据是认证凭证和会话ID。

1️⃣ 用户身份验证没有使用哈希(Hashing)或加密保护。

2️⃣ 认证凭证是否可猜测,或者能够能够通过薄弱的账户管理功能重写。

💭账户管理功能:创建账户、修改密码、密码恢复、弱会话ID重写等。

3️⃣ 会话ID暴露在URL里(例如URL重写)。

💭URL重写:简单来说就是将客户的URL请求重定向到你指定的URL。

4️⃣ 会话ID容易受到固定的攻击。

5️⃣ 会话ID没有超时限制,或者用户会话或身份验证令牌特别是单点登录令牌在用户注销时没有失效。

💭单点登录(SSO):用户只要登录了其中一个系统,就可以访问其他相关系统,而不用进行身份验证登录。

6️⃣ 成功注册后,会话ID没有轮转。

7️⃣ 密码、会话ID和其他认证凭据使用未加密连接传输。

如何防范❓

1️⃣ 区分公共区域和受限区域

我的理解:某应用部分功能只有开通VIP、SVIP、大SVIP才可使用🤣

2️⃣ 对最终用户帐户使用帐户锁定策略

我的理解:当一个用户多次登陆失败后,对帐户进行锁定。常见于Android系统的数字密码,多次输入错误会限制多少时间后在尝试。

3️⃣ 支持密码有效期

我的理解:通过设置密码有天数来强制用户更改密码🕗

4️⃣ 能够禁用帐户

我的理解:当用户执行删除等类似含有风险的命令时❌,可以对帐户进行锁定。

5️⃣ 不要在用户存储中存储密码

我的理解:登录旁边的 记住我🈲

6️⃣ 要求使用强密码

我的理解:强制用户使用复杂密码,比如:大小写、数字、特殊字符、长度✔

7️⃣ 不要在网络上以纯文本形式发送密码

当有人向你借号,请加密后发给他💖

8️⃣ 保护身份验证 Cookie

9️⃣ 使用 SSL 保护会话身份验证 Cookie

🔟 对身份验证 cookie 的内容进行加密

1️⃣1️⃣ 限制会话寿命

1️⃣2️⃣ 避免未经授权访问会话状态

(具体防范方式可以参考以下URL://blog.csdn.net/whoim_i/article/details/103171346

 

—end—

 

Tags: