-
TOKEN令牌
2016-09-22 15:32:57那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会...Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。
那么,Token有什么作用?又是什么原理呢?
Token一般用在两个地方:
- 1)防止表单重复提交、
- 2)anti csrf攻击(跨站点请求伪造)。
两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到session当中,然后将Token发给客户端(一般通过构造hidden表单)。下次客户端提交请求时,Token会随着表单一起提交到服务器端。
然后,如果应用于“anti csrf攻击”,则服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则可以证明请求有效,不是伪造的。
不过,如果应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的Token没变,但服务器端session中Token已经改变了。上面的session应用相对安全,但也叫繁琐,同时当多页面多请求时,必须采用多Token同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用cookie存储验证信息的方法来代替session Token。比如,应对“重复提交”时,当第一次提交后便把已经提交的信息写到cookie中,当第二次提交时,由于cookie已经有提交记录,因此第二次提交会失败。
不过,cookie存储有个致命弱点,如果cookie被劫持(xss攻击很容易得到用户cookie),那么又一次gameover。黑客将直接实现csrf攻击。所以,安全和高效相对的。具体问题具体对待吧。
-
tp5表单令牌有什么用
2018-06-08 16:57:51表单令牌的作用在于防止数据的重复提交,原理是生成一个token值,用session缓存起来,这个过程是在打开填写表单的页面时就生成了,然后我们填写完数据是提交到php页面,此时的token值会...转自:tp5表单令牌有什么用...表单令牌的作用在于防止数据的重复提交,原理是生成一个token值,用session缓存起来,这个过程是在打开填写表单的页面时就生成了,然后我们填写完数据是提交到php页面,此时的token值会和之前缓存起来的值进行对比,如果不一样就会报错。
转自:tp5表单令牌有什么用
-
Access Token访问令牌的操作
2010-10-13 08:39:00access token 访问令牌的概念 Windows操作系统安全性的一个概念。一个访问令牌包含了此登陆会话的安全信息。当用 用户权利指派户登陆时,系统创建一个访问令牌,然后以该用户身份运行的的所以进程都...access token 访问令牌的概念
Windows操作系统安全性的一个概念。一个访问令牌包含了此登陆会话的安全信息。当用 户登陆时,系统创建一个访问令牌,然后以该用户身份运行的的所以进程都拥有该令牌的一个拷贝。该令牌唯一表示该用户、用户的组和用户的特权。系统使用令牌控制用户可以访问哪些安全对象,并控制用户执行相关系统操作的能力。有两种令牌:主令牌和模拟的令牌。主令牌是与进程相关的;模拟的令牌是与模拟令牌的线程相关的。 进程拥有某种令牌就表示它拥有某种特权。什么是特权呢?特权是指用户进程进行各种系统操作的权利。如:关机,加载设备驱动程序,改变系统时间也是一种特权。可以对用户或用户所在的组授予特权。见图。WinNT定义的特权
在WinNT.h头文件中定义了这些特权的名称: #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") #define SE_TCB_NAME TEXT("SeTcbPrivilege") #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") #define SE_DEBUG_NAME TEXT("SeDebugPrivilege") #define SE_AUDIT_NAME TEXT("SeAuditPrivilege") #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege") #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege")对令牌可以进行的操作
Value Meaning TOKEN_ADJUST_DEFAULT 改变令牌所有者、主组或访问控制列表DACL TOKEN_ADJUST_GROUPS 改变令牌的组属性 TOKEN_ADJUST_PRIVILEGES enable or disable 令牌的特权 TOKEN_ADJUST_SESSIONID 调整令牌的Session ID。进程需要 SE_TCB_NAME 特权. TOKEN_ASSIGN_PRIMARY 为进程分配主令牌。需要 SE_ASSIGNPRIMARYTOKEN_NAME 特权 TOKEN_DUPLICATE 复制令牌 TOKEN_EXECUTE 合并 STANDARD_RIGHTS_EXECUTE 和 TOKEN_IMPERSONATE. TOKEN_IMPERSONATE 附加一个模拟令牌到进程 TOKEN_QUERY 查询令牌 TOKEN_QUERY_SOURCE 查询令牌源 TOKEN_READ 合并 STANDARD_RIGHTS_READ 和TOKEN_QUERY. TOKEN_WRITE 合并 STANDARD_RIGHTS_WRITE, TOKEN_ADJUST_PRIVILEGES, TOKEN_ADJUST_GROUPS, 和 TOKEN_ADJUST_DEFAULT. TOKEN_ALL_ACCESS 合并所以可能的操作 值 含义 SE_PRIVILEGE_ENABLED 使特权有效 SE_PRIVILEGE_ENABLED_BY_DEFAULT 使特权默认有效 SE_PRIVILEGE_REMOVED 移除该特权 SE_PRIVILEGE_USED_FOR_ACCESS 取得对象或服务的访问权 取得特权的LUID值
首先通过LookupPrivilegeValue函数取得某种特权的LUID,通过特权的名称查找特权的LUID。 BOOL WINAPI LookupPrivilegeValue( __in_opt LPCTSTR lpSystemName, //特权所在的系统名称,NULL表示本地系统 __in LPCTSTR lpName, //特权名称,在WInNT.h 中定义的特权名称 __out PLUID lpLuid //取得的特权的LUID ); 如下代码取得SE_DEBUG_NAME特权的LUID,并将特权属性设为SE_PRIVILEGE_ENABLED TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid); tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;调整令牌特权
AdjustTokenPrivileges函数可以调整令牌的特权。函数定义如下: BOOL WINAPI AdjustTokenPrivileges( __in HANDLE TokenHandle, //令牌句柄 __in BOOL DisableAllPrivileges, //是否禁用所有特权,如为TRUE,则忽略NewState参数 __in_opt PTOKEN_PRIVILEGES NewState,//调整为NewState结构定义的特权 __in DWORD BufferLength, //PreviousState 参数的字节大小 __out_opt PTOKEN_PRIVILEGES PreviousState, 可选,调整之前的TOKEN_PRIVILEGES结构体指针 __out_opt PDWORD ReturnLength //可选,返回的结构体的长度 ); //调用 AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL); -
token生成算法_什么是Token?
2020-12-05 04:32:34有什么用?本文简单介绍token,并介绍基于token的用户认证方案。Token是什么Token是一个身份凭证,有个很贴切的翻译叫“令牌”。发给你一个令牌,你在遇到关卡的时候出示令牌,证明自己的身份。Token的概念广泛应用...前言
前几天谈一个合作,写了份技术文档。对方看了之后抛出萌新三连:什么是token?怎么生成?有什么用?
本文简单介绍token,并介绍基于token的用户认证方案。
Token是什么
Token是一个身份凭证,有个很贴切的翻译叫“令牌”。发给你一个令牌,你在遇到关卡的时候出示令牌,证明自己的身份。
Token的概念广泛应用于许多领域。比如区块链中,比特币和以太坊的“代币”,形式也是token。本文具体讨论的是用于网站登录态的Token方案。
Access Token方案
注意,登录这一步的关键是验证用户身份,不一定是用户名/密码的登录接口,也可以是其他方式,只要保证token能安全颁发到客户端即可。可以参考我之前另一篇博客《Gitlab-CI实践》,token是直接复制粘贴的。
怎么生成Token
Token的要求:
无规律的字符串。
每个用户、每次获取都不同。
不重复。
生成方式:
最简单的实现方式,以当前时间戳作为盐,对用户ID进行MD5。
使用用散列加密算法。node.js可以用crypto.createHmac,PHP可以用openssl_random_pseudo_bytes或mcrypt_create_iv。
常用的框架一般都有生成token的函数,可以参考相关文档。
怎么使用Token
客户端收到Token之后需要妥善保管,不可轻易泄漏。如果客户端是网页,建议存在Cookie中,并设为HttpOnly。客户端发起Ajax请求的时候,需要带上Token,可以随cookie发送,也可以在作为Http header中的自定义参数。
服务器生成token时也需要妥善保存,一般存于数据库,与用户信息一一对应。验证token时,根据token反查对应的用户,再进行权限校验等。
Token的有效期
登录态不是永久的,肯定要有过期或者失效的机制。这通常服务端来实现过期机制的。
服务器在创建或更新token时,使用另一个字段存储这个token的过期时间。每次校验token的时候,只匹配有效期内的token。有效期的长短根据业务需求来定,也可以设计成每次业务请求时刷新过期时间,太久不进行业务请求就判断为token已经失效。如果想从服务端主动吊销已经颁发的token,也只需要修改过期时间就行了。
对于客户端来说,token只有“有效”和“失效”两种状态,如果发给服务器验证失败,那么说明本地存的token已经失效了,直接删掉,重新走登录流程去获取。如果使用cookie来储存token,cookie本身可以设置过期时间,可以参考我之前的博客《全面了解Cookie》。
还有另一类把过期时间存在客户端的方案,本文不做讨论,有兴趣可以参考我另一篇博客《Json Web Token》。
Token和Cookie的关系
Cookie只是token的储存和发送的方案之一。你也可以把token存到localStorage中,并使用自定义http header字段来发送给服务端。但这样做带来有严重的安全性问题:
localStorage无法设置HttpOnly、Domain和Path,XSS攻击可轻易窃取token;
Cookie会在每个请求中带上,包括图片和文件,服务器都能对其进行校验。但Token如果放在Http header中,一般只用在XMLHttpRequest中。
为了避免安全性问题,web应用推荐使用cookie来储存token。
Cookie仅限于浏览器上的web应用,仅限于http相关的协议,而token却不受此限制。只要能保证token储存和传递的安全性,它可以用在任何应用、任何协议上。
后记
本文介绍了Token的基础知识和Access Token方案。下篇博客将介绍Json Web Token(JWT)相关内容。
-
token是什么
2020-12-14 16:52:42对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入... -
令牌环网概念_令牌环网工作原理_令牌环网为什么没人用
2021-02-08 16:46:20在令牌环网中有一个令牌(Token)沿着环形总线在入网节点计算机间依次传递,令牌实际上是一个特殊格式的帧,本身并不包含信息,仅控制信道的使用,确保在同一时刻只有一个节点能够独占信道。当环上节点都空闲时,... -
什么是token
2021-01-05 21:21:05对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的... -
token
2019-04-12 16:35:54那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一... -
什么是Token?
2020-07-25 16:47:17对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入:... -
Token
2015-10-08 17:55:51那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成... -
token作用
2018-03-12 23:32:16参考:...那么,Token有什么作用?又是什么原理呢?Token一般用在两个地方:1)防止表单重复提交、2)anti csrf攻击(跨站点请求伪造)。两者在原理上都是通过session token来实现的。当客户... -
web Token
2015-03-08 14:18:20那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成... -
token机制
2020-09-25 11:02:202、为什么要用token? 产生背景: 试想下如果有人知道了你的请求接口,如果他在不登录的情况下,恶意调用你的删除接口,随意删除你的数据,这样是不是会给你造成很大的麻烦,所以每次你调用接口时后台需要验证你是否... -
Token介绍
2020-12-28 16:32:52对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的... -
token暴露安全吗_web安全之token
2020-12-20 05:55:33参考:...那么,Token有什么作用?又是什么原理呢?Token一般用在两个地方:1)防止表单重复提交、2)anti csrf攻击(跨站点请求伪造)。两者在原理上都是通过session token来实现的。当客户端... -
// 获取账号id为10001的token令牌值 StpUtil.setLoginId(10001, "PC"); // 指定设备标识登录 StpUtil.logoutByLoginId(10001, "PC"); // 指定设备标识进行强制注销 (不同端不受影响) StpUtil.switchTo(10044); // ...
-
// 获取账号id为10001的token令牌值 StpUtil.setLoginId(10001, "PC"); // 指定设备标识登录 StpUtil.logoutByLoginId(10001, "PC"); // 指定设备标识进行强制注销 (不同端不受影响) StpUtil.switchTo(10044); // ...
-
Token 的作用
2018-08-08 12:29:41那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一... -
token的使用
2016-09-14 10:52:40那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一... -
Token作用和原理
2017-11-04 11:32:01首先我们说一下,什么是token??? ... 那么Token是服务端生成的一串字符串,也就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测...那么,Token有什么作用?又是什么原理呢? Token一般用在两... -
浅谈token
2018-09-08 01:15:001.什么是token? 是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊...2.有什么用? a.基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的: 1.客户端使用用户名跟密码... -
token失效自动刷新
2019-12-29 19:09:49在开发过程中,我们都会接触到token(令牌),为什么要用token呢?主要的作用就是为了安全,用户登录时,服务器会返回一个有时效性的token,用户的每一次请求都需要携带上token,服务器会验证token的有效性。 需求 ... -
web安全之token
2018-08-06 14:58:56那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一... -
Token 作用和原理
2019-09-20 17:41:31Token,就是令牌,最大的特点就是随机性,不可预测。...那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都... -
WEB安全之Token
2016-06-06 12:21:11那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方——防止表单重复提交、anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,... -
关于Token 的理解
2016-07-04 13:42:00那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交、 2)anti csrf攻击(跨站点请求伪造)。 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会...