网站常见的鉴权认证方式有哪几种?

一、什么是鉴权

鉴权(authentication)是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。这种方式的前提是,每个获得密码的用户都已经被授权。在建立用户时,就为此用户分配一个密码,用户的密码可以由管理员指定,也可以由用户自行申请。这种方式的弱点十分明显:一旦密码被偷或用户遗失密码,情况就会十分麻烦,需要管理员对用户密码进行重新修改,而修改密码之前还要人工验证用户的合法身份。
为了克服这种鉴权方式的缺点,需要一个更加可靠的鉴权方式。目前的主流鉴权方式是利用认证授权来验证数字签名的正确与否。

二、网站常见的鉴权认证方式

  • Session机制
  • JWT机制
  • Auth2机制

2.1Session认证的原理

解析:第一次登陆网站的时候,需要填写用户名和密码,之后push到服务器上,因为是第一次注册,服务器先去查看一下用户名是否被人用过,如果已经被人使用,需要重新注册一个用户名,若没有,则可以进行创建。创建有两种方法:第一种是把用户名和密码直接保存在数据库中,这种方法对于服务器来说,有风险,一旦数据库密码被攻破了,数据就会被泄露。第二种方法:数据库不存储明文密码,只存储用户名之后生成一个随机数,之后输入的密码和随机数通过SHA256(单向散列函数)进行处理,把密码加随机数生成一个字符串,把这个字符串(secret)和随机数(salt)和用户名(username)存储起来。当用户进行登录的时候,首先数据库进行查找,有无这个用户名,如果有的话,就会进行一个计算,用密码和随机数通过SHA256进行处理,得到一个随机字符串,把这个字符串和之前的进行比较,如果是一样的,则表示密码正确。之后再服务器创建一个对象(session),存到内存(小数据)中或者数据库中,服务器发送响应给浏览器,响应报文中有一个Set-Cookie:s_id=1b3ra9字段,浏览器发现这个字段就把他放到cookie中,下一次用户再一次请求的时候,请求会自动带cookie字段,服务器收到带cookie请求,则先进行比较,找到相同的s_id,之后发送更多的信息返回给浏览器。

2.2JWT(全称:JSON Web Token)认证的原理

解析:假设已经注册好,服务器只要生成token就可以了,之后把token返回给客户端。token = str1+‘.‘+str2+‘.‘+str3。浏览器需要手动的把token存储起来,可以存在cookie里,下一次发送请求的时候只需要/user?jwt_token=xxx就可以了。服务器收到请求后,要对token进行验证。(图片上步骤8)base64加密解密方法。

  • 再一次发送请求的方法:

    • /user?jwt_token=xxx;
    • 或者把token放到请求头(Authorization)里面。
  • 优点:
    • 任何地方都可以使用,使用范围广泛。(只需要把Token在客户端保存起来)
    • 服务器额存储压力小,session是需要进行存储的,但是Token不需要。
  • 缺点:
    • 增加了计算压力,每个请求到达,都要进行计算。
    • cookie的续期比较麻烦。
    • 点击了发送请求后,立即点击注销,但是cookie还是存在。

2.3Auth2认证的流程

  • 使用场景

    • 网站会有一个登陆,(比如QQ登陆),第三方账号登陆,没有注册,登陆后会回到当前网站。
  • 流程
    网站找认证服务器要用户的数据。网站必须拿到用户允许服务器给数据的凭证,否则服务器不会随意给数据。用户向服务器奥认证,服务器询问是否确定给凭证,用户回复确定才会给凭证。

    • (9)步骤:一定要有凭据、自己的名片、自己的密钥。

2.4和JWT相比Session机制有哪些缺点

  • 如果摆脱浏览器,没有cookie,不能用在任何场景。(小程序、终端、app)
  • 如果把session放在内存中,则会导致占用大量内存。
  • 当采用分布式的时候,如果把数据存储在数据库中,则进行处理会比较麻烦。
  • 如果存在XSS漏洞,cookie容易泄露。

2.5Session机制如何能尽量保证安全

  • 对保存到cookie里面的敏感信息必须加密
  • 设置HttpOnly为true(针对http)
    • 该属性值的作用就是防止Cookie值被页面脚本读取。
    • 但是设置HttpOnly属性,HttpOnly属性只是增加了攻击者的难度,Cookie盗窃的威胁并没有彻底消除,因为cookie还是有可能传递的过程中被监听捕获后信息泄漏。
  • 设置Secure为true(针对HTTPS)
    • 给Cookie设置该属性时,只有在https协议下访问的时候,浏览器才会发送该Cookie。
    • 把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。
  • 给Cookie设置有效期
    • 如果不设置有效期,万一用户获取到用户的Cookie后,就可以一直使用用户身份登录。
    • 在设置Cookie认证的时候,需要加入两个时间,一个是“即使一直在活动,也要失效”的时间,一个是“长时间不活动的失效时间”,并在Web应用中,首先判断两个时间是否已超时,再执行其他操作。
  • 一定不要在cookie中存储重要和敏感的数据
    JavaScript中cookie那些事
    cookie数据并非存储在一个安全的环境中,其中包含的任何数据都可以被其他人访问到,所以不要在cookie中存储如银行卡或个人地址之类的数据。

转自:https://www.jianshu.com/p/f2a08107599a

原文地址:https://www.cnblogs.com/vickylinj/p/11929910.html

时间: 2024-10-07 21:45:03

网站常见的鉴权认证方式有哪几种?的相关文章

WebAPI常见的鉴权方法,及其适用范围

在谈这个问题之前,我们先来说说在WebAPI中保障接口请求合法性的常见办法: API Key + API Secret cookie-session认证 OAuth JWT 当然还有很多其它的,比如 openid connect (OAuth 2.0协议之上的简单身份层),Basic Auth ,Digest Auth 不一一例举了 1.API Key + API Secret Resource + API Key + API Secret 匹配正确后,才可以访问Resource,通常还会配合时

sip鉴权认证算法详解及python加密

1. 认证和加密    认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁.而相关的概念是MD5,用于认证安全.注意MD5仅仅是个hash函数而已,并不是用于加密.因为hash函数处理后的数据没法进行反向恢复,这样子的话别人没法盗取你认证身份的口令.    加密(Encryption)的作用在于对想传输的数据进行处理,在网络中即使被窃取也难以破解.加密的信息可以被破解,这需要一把钥匙--"密钥".通过密钥,我们可以对数据进行加密和解密.最有名的专用密钥加密系

正确选择图片加载方式能够对内存优化起到很大的作用,常见的图片加载方式有下面三种:

1 2 3 4 5 6 7 //方法1   UIImage *imag1 = [UIImage imageNamed:@"image.png"];   //方法2   UIImage *image2 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.png" ofType:nil]];   //方法3   NSData *imageData = [NSD

Java 实现 SSH 协议的客户端登录认证方式--转载

背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnection Reference Model)出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务.接口

【JMeter连接SQLServer】采用window鉴权方式连接(原创)

大家都知道Jmeter可以连接各种数据库,这方面我也不多说了,如果你还不知道怎么连接的话,可以参看我看的另外一篇博文,这边有详细的介绍 http://blog.csdn.net/lzqinfen/article/details/38730259 回归正题,由于公司测试环境的问题,我在连接SQLServer时,公司只能使用window方式的鉴权(通过我们的域账号验证),这下就变得麻烦了,因为本来按照普通的sqlServer连接,是很简单的如下图一样: 但现在采用window鉴权的方式,你无法再填写

鉴权,开放式授权,单点登陆

鉴权 鉴权(authentication)是指验证用户是否拥有访问系统的权利.传统的鉴权是通过密码来验证的.这种方式的前提是,每个获得密码的用户都已经被授权.在建立用户时,就为此用户分配一个密码,用户的密码可以由管理员指定,也可以由用户自行申请.这种方式的弱点十分明显:一旦密码被偷或用户遗失密码,情况就会十分麻烦,需要管理员对用户密码进行重新修改,而修改密码之前还要人工验证用户的合法身份. 为了克服这种鉴权方式的缺点,需要一个更加可靠的鉴权方式.目前的主流鉴权方式是利用认证授权来验证数字签名的正

公共平台服务治理与鉴权

问题 解决问题 鉴权 注册 管理 总结 聊一聊最近了解的公司服务治理平台,主要是思想,理念,而不是一种技术或框架.整个平台设计,融入了OAUTH2认证,融入了微服务思想,帮助公司各系统在复杂的IT架构下,实现一种便捷统一的调用方案,同时完成调用的管理(监控.注册.鉴权等). 问题 一种思想或理念的出现,是否有价值,我认为主要在于它实际解决了哪些问题.基于这个价值观,我们先看看,当一个公司有成百上千个系统时,会有哪些问题? pi如: 接口访问有没有鉴权?如何鉴权?这个话题很大,归根揭底就是,要让提

网站常见的反爬虫和应对方法

这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 通过Headers反爬虫  从用户请求的Headers反爬虫是最常

网站常见的反爬虫和应对方法(转)

在我们的对2016年大数据行业的预测文章<2016年大数据将走下神坛拥抱生活 资本青睐创业机会多>里,我们曾经提到“在2016年,防止网站数据爬取将变成一种生意.”.今天我找到了来自”BSDR“的一篇文章,文章里主要介绍了常见的反爬虫应对方法,下面是正文. 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采