首页 > 其他分享 >权限的相关内容

权限的相关内容

时间:2024-11-26 19:32:21浏览次数:5  
标签:应答 认证 session 内容 授权 相关 权限 鉴权

目录

权限的四个概念

认证

根据声明者持有的特定信息,来确认声明者的身份关键点是特定信息,这个信息,⼀般也称为认证因素。⽐如最常⻅的⽤户名密码,说⽩了,就是我要⽤这些信息来证明“我是我”。
更具体的,如何证明“我是我”?其实就是⼀个信息⽐较的过程,⼀定要预先有⼀个数据库来储存原信息。

授权

服务器给予的临时凭证,持有该凭证的⽤户即认为已经经过了认证,⽆需再次进⾏认证。(⽤户在后续的访问中,只需要出示凭证即可,⽆需⼀次⼀次的进⾏认证)并且,在授权的过程中,要明确的是权限也是划分等级的。⼀个管理员账户与⼀个普通⽤户账户⾃然不能⽐较。

鉴权

鉴定⽤户是否持有授权
鉴定⽤户的授权是否有效
鉴定⽤户的授权的等级

权限验证

其实权限验证跟鉴权的界限⾮常模糊,或者可以说权限验证/权限控制(ACL)是鉴权的⼦集也不为过。为什么要单独拿出来,就是为了引出具体的“动作”权限验证这个概念。

挑战/应答(Challenge/Response)

# 输出挑战信息
print("Hello! Challenge here!")
 
# 生成挑战码,一般是个随机字符串之类的
code = ChallengeCodeGenerator()
 
# 根据挑战码生成应该得到的应答
resp = responseGenerator(code)
 
# 输出挑战码
print("Here is the ChallengeCode:" + code)
 
# 获取用户应答
user_input = read_input()
 
# 检测用户应答是否正确
if user_input == resp:
    print("You are in")
else:
    print("Out!")

所以说,这种挑战、应答机制是否安全,强依赖于respGenerater中⽣成逻辑。⼀旦其⽣成逻辑开源出来,并且是⼀个环境⽆关的检测逻辑,那么很有可能就被击溃,因为攻击者并不需要考虑任何环境因素。
有⼀个强依赖于环境的变量在其中,⽐如:某设备出⼚的时候,就是⼀机⼀码的,该唯⼀的身份码已经直接硬编码写在机器的/etc/dada⽬录,每个机器都不⼀样。只有⼚商在⾃家的数据库有存,这种情况下,我们就没办法直接预知了。

授权⽅式/身份凭证

cookie

<?php
if ($_COOKIE["user_id"] == 0) {
    echo "你是管理员";
} else {
    echo "你是游客";
}
?>

session

认证成功后后端会⽣成session_id,并且将该session_id存在某个地⽅。
然后做以下操作:

  1. 在认证结束的返回(response)中,进⾏set-cookie将session_id告知客户端浏览器
  2. 客户端在后续的访问中携带session_Id进⾏访问(持有身份凭证)
  3. 从某个地⽅检查该session_id的有效性(鉴权)
  4. 根据鉴权结果,确定是否有权限进⾏某动作。

储存位置

php

默认存储在服务端/tmp⽬录下(⽂件)

flask

默认存储在⽤户的cookie中(密钥加密)

java

默认存储在内存中

gin/其他可选的地⽅

redis/mysql/memcached/mongodb

jwt认证

JWT(JSON Web Token)是⼀个开放标准(RFC 7519),它定义了⼀种紧凑且⾃包含的
⽅式,以JSON对象的形式在各⽅之间安全地传输信息。
JWT是⼀个数字签名,⽣成的信息是可以验证并被信任的。
使⽤密钥(使⽤HMAC算法)或使⽤RSA或ECDSA的公钥/私钥对JWT进⾏签名。
JWT是⽬前最流⾏的跨域认证解决⽅案

AK/SK认证

客户端在调用的服务端接口时候,会带上ak以及signature(使用sk对内容进行加密后得出的签名)进行请求,在服务端接收到这个请求的时候,首先会根据ak去数据库里面去找到对应的sk,然后使用sk对请求内容进行加密得到一个签名,然后对比客户端传过来的签名和服务端计算的出来的签名是否一致,如果一致则代表身份认证通过,反之则不通过。

标签:应答,认证,session,内容,授权,相关,权限,鉴权
From: https://blog.csdn.net/ubaichu/article/details/144066193

相关文章

  • 网站模板文字内容修改,如何在网站后台或代码编辑器中修改模板文字内容
    修改模板文字内容可以提升网站的信息传达效果。以下是具体步骤:登录网站后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。输入管理员账号和密码,点击“登录”。进入模板管理:登录后,点击顶部菜单栏中的“模板”或“主题”。选择“模板管理”或“主......
  • 网站模板文字内容修改,如何在网站后台或代码编辑器中准确修改模板文字内容
    修改模板文字内容可以提升网站的信息传达效果。以下是如何准确在网站后台或代码编辑器中修改模板文字内容的步骤:登录网站后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。输入管理员账号和密码,点击“登录”。进入模板管理:登录后,点击顶部菜单栏中......
  • MySQL 用户与权限管理
    MySQL是一种广泛使用的关系型数据库管理系统,支持多用户访问和权限控制。在多用户环境下,数据库安全至关重要,而用户和权限管理是数据库管理中最基础也是最重要的一部分。通过合理地创建和管理用户、分配和管理权限、使用角色权限,可以有效地保护数据库,确保数据的安全性和完整......
  • 查找相关知识点
    一.基本概念1.查找:在数据集合中寻找满足条件的数据元素2.查找表:用于查找的数据结合称之为查找表3.静态查找表(StaticSearchTable):只作查找操作的查找表。主要操作查询某个“特定的”数据元素是否在查找表中。检索某个“特定的”数据元素和各种属性。4.动态查找表(Dy......
  • 用Scala来解决成绩排名的相关问题
    任务目标:1.计算每个同学的总分和平均分2.按总分排名,取前三名3.按单科排名,取前三名下图为学生的成绩表实现代码为:packagetest33importjava.io.PrintWriterimportscala.collection.mutable.ListBufferimportscala.io.SourcecaseclassStudent(name:String,yuwe......
  • 对数组操作的相关js函数
    汇总一下js中,数组的相关函数(如有问题,请在评论区q我哦!感谢!)1.添加和删除数组元素//1.push在数组末尾添加一个或多个元素,并返回新的长度(改变原数组)letarray=[1,2,3];array.push(4);console.log(array);//输出[1,2,3,4]//2.pop移除数组末尾的一个元素,并返......
  • 清理 Windows 系统中与外部设备连接(如 USB 驱动器、外接硬盘等)相关的历史记录和注册表
    清理Windows系统中与外部设备连接(如USB驱动器、外接硬盘等)相关的历史记录和注册表信息,你可以通过修改注册表来删除相应的记录。以下是一个详细的步骤,帮助你删除这些记录:1. 清理外部设备的历史记录Windows会在注册表中记录插入过的外部设备的相关信息。你可以通过以下步骤......
  • DSPf28335 --工程模版相关文件
    创建工程需要的两个文件DSP2833x_common1.cmd下图中的两个文件(由TI公司提供的)1、28335_RAM_lnk.cmd:程序下载到RAM中进行调试和仿真所使用的启动文件。2、F28335.cmd:程序下载到Flash中运行所使用的启动文件。2.gel用来存放一些扩展语言,扩展CCS功能,方便调试,(通常不更改)......
  • 关于力矩、转动惯量、扭矩等机器人、电机领域相关名词的解析和扫盲
    前言这篇博客主要用于记录一些关于电机一些专有名词分析的事情,特此记录,一方面便于日后自己的温故学习,另一方面也比便于大家的学习和交流。如有不对之处,欢迎评论区指出错误,你我共同进步学习!这里摘要自b站的这位老师的视频,原视频很长,这里做出一定程度的总结:点击跳转至原视频正文......
  • Python处理时间汇总-与时区相关的处理
    获取当前东八区时间以及统一时区的时间比较#coding:utf-8importpytzimportdatetime#定义东八区时区cst_timezone=pytz.timezone('Asia/Shanghai')#获取东八区的当前时间defget_cst_nowtime():returndatetime.datetime.now(cst_timezone)#将时间对象......