【Web安全】认证与会话管理

news2024/11/22 18:31:28

目录

1. 认证与授权

2. 密码

3. 多因素认证

 4. Session与认证

5. Session Fixation攻击

6. Session 保持攻击

7. 单点登录SSO


1. 认证与授权

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

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

如果只有一个凭证被用于认证,则称为“单因素认证”

如果有两个或多个凭证被用于认证,则称为“多因素认证”

2. 密码

密码的优点是成本低,使用起来方便,但缺点是其安全性较弱,可能会被猜解

目前黑客常用的暴力破解的手段,不是破解密码,而是利用弱口令猜解用户名,直到发现一个使用弱口令的账户为止。 

 密码的保存必须使用不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。

在用户注册时就将密码进行哈希(MD5或SHA-1)后保存至数据库,用户登陆时将用户提交的密码进行相同算法的哈希,再将该哈希值与数据库中的密码哈希值进行比较。 

目前黑客破解MD5的一种方法是“彩虹表”,表内收集尽可能多的密码明文与明文对应的MD5值,这样只需要查询到MD5值就可以知道对应的明文。

为此引入了加盐哈希,盐值Salt增强了密码的复杂度。

3. 多因素认证

如果只有密码,安全性太低,所以大多数平台都会使用双因素认证或多因素认证。

例如手机动态口令、数字证书、支付盾、第三方证书……使得认证的过程更加安全。

 4. Session与认证

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

为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。

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

Session劫持就是通过窃取用户的SessionID,使用该SessionID登录目标账户进行攻击的方法,如果SessionID保存在Cookie中,则称为Cookie劫持。

SessionID还可以保存在URL中作为请求的一个参数,但是安全性很低。(很多手机浏览器不支持Cookie,就只能将SessionID作为URL参数)

5. Session Fixation攻击

在用户登录网站的过程中,如果SessionID没有发生变化,则会存在Session Fixation问题。

用户X获取到一个未经认证的SessionID,将其交给用户Y去认证,Y完成认证后,服务器没有更新此SessionID的值(注意是未改变SessionID而不是未改变Session),所以X可以直接凭借SessionID登录Y的账户。

如果SessionID保存在URL中,只要攻击者诱使用户打开这个URL,在该用户登陆完成后,黑客就可以直接通过此URL进入用户账户。

想要防止Session Fixation攻击,在登陆完成后,重写SessionID。 

6. Session 保持攻击

保持该Session一直不失效,就可能一直成为攻击者的后门。

攻击者可以通过不停地发起访问请求(不停刷新页面、发送带有自定义Cookie头的HTTP包),让Session一直活下去。

在Web开发中,网站访问量如果比较大,维护Session可能会给网站带来巨大负担。因此,有一种做法,就是服务器端不维护Session,把Session放在Cookie中加密保存。当浏览器访问网站时,会自动带上Cookie,服务器端只需要解密Cookie即可得到当前用户的Session。

Cookie的Expire标签可以控制Session的失效时间,且这个时间完全由客户端控制。篡改这个世界使其永久有效,就可以得到一个永久有效的Session,服务器端无法察觉。

攻击者甚至可以为Session Cookie增加一个Expire时间,使得原本会浏览器关闭就失效的Cookie持久化地保存在本地,变成一个第三方Cookie。

7. 单点登录SSO

单点登录希望用户只需要登陆一次,就可以访问所有的系统。

SSO的优点在于风险集中化,只需要保护好这一个点。

SSO的缺点在于风险集中,这个点一旦被攻破全盘崩溃。

目前网上最为流行和开放的单点登录系统是OpenID。它使用URL作为用户的身份标识,每个用户拥有唯一的URL。

 在使用OpenID时,第一步是向网站提供OpenID。

 第二部,网站重定向到OpenID的提供者进行身份认证。

第三步,用户将在OpenID的提供者网站登录,并重定向回网站。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通达信交易接口代码的执行过程分享

股票软件一般都提供了接口,可以参考里面的公式,编写自己的公式,这样就可以得到相应的数据了。无论使用哪种语言,建议先了解文档,然后再阅读各编程语言的用户手册。 通达信交易接口代码的执行过程分享: //…

非零基础自学Golang 第7章 函数 7.4 可变参数

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.4 可变参数7.4.1 可变参数函数的使用7.4.2 可变参数与内置函数7.4.3 可变参数的传递第7章 函数 7.4 可变参数 Go语言支持可变参数的特性,即函数声明时可以没有固定数量的参数。 可变参数的函数格式如下…

相关分析和回归分析

相关与回归分析就是了解变量之间相关关系的统计方法 一.相关分析 具有相关关系的变量之间,如果不区分原因和结果,我们称之为相关分析 相关分析是看两个因素之间的相关性,不需要确定哪个是自变量,哪个是因变量,两个因…

CAS:2236573-39-8|水溶CY7-amine|花菁染料CY7标记氨基

CAS:2236573-39-8|水溶CY7-amine|花菁染料CY7标记氨基 中文名:氰基Cy5-氨基 CAS:1650635-41-8 分子式:C43H60Cl2N4O 分子量:719.87 外观:绿色粉末 纯度:≥95% 保存条件 :避光,干燥&#…

【linux】容器

一、虚拟化分类 虚拟化资源提供者 硬件平台虚拟化操作系统虚拟化 虚拟化实现方式 Type I 半虚拟化Type II 硬件辅助全虚拟化Type III 软件全虚拟化操作系统虚拟化 回顾硬件平台虚拟化与操作系统虚拟化区别 主机虚拟化与容器虚拟化的优缺点 主机虚拟化 应用程序运行环境强隔…

Java+Servlet电商购物系统(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频,手把手带同学们敲代码从0到1完成项目 该项目采用技术MyBatis、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程、项目发布教程。 项目涉及的技术: 1、前端:JSP、css、Javascrip…

Java类型转换

java是一门强类型语言,当不同类型之间的变量相互赋值时,会有严格的校验。当类型不一致时,就会发生类型的转换。java中类型转换分为两类:自动类型转换和强制类型转换。 造型(casting)的含义是把一种类型的值赋给另一种类型的变量。…

可视化项目管理,项目进度管理必备工具

一个项目能不能成功,其实在开始时就决定了,计划是否完善,任务是否明确决定着项目能否顺利进行。 同时,在项目进行过程中,也要监控项目的进度以确保每项工作都能按进度进行,必须不断掌握计划的实施情况。 …

计算机毕业设计django基于python教学互动系统

项目介绍 在各学校的教学过程中,教学互动管理是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及,“基于网络的学习模式”正悄无声息的改变着传统的教室学习模式,“基于网络的教学互动平台”的研究和设计也成为教育技术领域的热点课题。采用当前流行的B/S模式以及3…

人工智能学习:倒立摆强化学习控制-Policy Gradient(11)

相对于DQN输出采取动作的Q值,Policy Gradient网络输出采取动作的概率,根据概率来判断需要采取的动作,并在训练过程不断修正网络,使输出的概率更好的符合最优的采取动作的策略。关于Policy Gradient方法的详细原理,可以…

[附源码]计算机毕业设计的汽车租赁系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

配置虚拟主机

配置虚拟主机 虚拟主机在一台Web 服务器上,可以为多个独立的IP地址、域名或端口号提供不同的Web 站点。对于访问量不大的站点来说,这样做可以降低单个站点的运营成本。 子任务1 配置基于IP地址的虚拟主机 基于IP地址的虚拟主机的配置需要在服务器上…

详解STM32启动文件

本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。 启动文件使用的ARM汇编指令汇总 Stack——栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGNStack_Mem SPACE Stack_Size__initi…

nodejs安装及环境配置

node.js下载 地址:https://nodejs.org/en/download/ 如果要下载指定的版本,可以点击下面的链接。 开始安装 双击msi,开始安装node.js。 点击【Next】按钮 勾选复选框,点击【Next】按钮 修改好目录后,点击【Nex…

大三学生HTML期末作业,网页制作作业——HTML+CSS+JavaScript饮品饮料茶(7页)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

vuex配置项(核心概念),vuex的触发流程

1.vuex中有哪些配置项(核心概念)作用是什么 state作用: 负责存储数据 getters作用:state计算属性(有缓存) mutaions作用:负责同步更新state数据 mutaions是唯一可以修改state数据的方式 actions作用:负责…

当AI学会创作,是否应该感到担忧?

当AI学会创作,是否应该感到担忧?0. 前言1. 人工智能与 AIGC1.1 人工智能简介1.2 人工智能与 AIGC1.3 步入 AIGC 时代2. 文本生成模型3. 代码生成模型4. 图像生成模型小结与展望0. 前言 近来,随着 Open AI 发布的新一代 AI 聊天机器人 ChatGP…

【Redis】Redis 持久化(RDB和AOF)

文章目录概述RDB触发机制如何恢复 rdb 文件?RDB 优点:RDB 缺点:AOFAOF 优点AOF 缺点概述 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务器一旦进程退出,服务器中的数据库状态也会消失…

软件供应链安全状况报告

根据 ReversingLabs 于 2022 年 12 月 5 日发布的报告《软件供应链安全状况》(文末提供报告阅读地址) ,在 2020 年至 2022 年初供应链攻击呈指数级增长之后,企业在整个2022 年出现了缓慢但稳定的增长。 ReversingLabs的研究基于上…

深证L2接口是如何运营的?

深证L2接口是现在大数据时代常用的一种程序接口,它集程序与协议于一体,为用户提供他们所需要的数据,这大大提高了用户的交易效率。 深证L2接口是如何运营的? 首先就是获取股票数据运用得最频繁的领域,股票交易市场领…