精华内容
下载资源
问答
  • 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:00
    access 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")

    如何取得一个进程的访问令牌 通过API函数OpenProcessToken 取得进程令牌。其定义如下:  BOOL WINAPI OpenProcessToken(  __in HANDLE ProcessHandle, //进程句柄。通过GetCurrentProcess函数取得当前进程句柄  __in DWORD DesiredAccess, //要对令牌进行何种操作。如TOKEN_ADJUST_PRIVILEGES用于调整权限  __out PHANDLE TokenHandle //进程令牌句柄  );  如下代码取得进程的令牌,并告诉系统我们想调整令牌的权限  HANDLE hToken;  if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,  &hToken)) {  ......  }

    对令牌可以进行的操作

    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 合并所以可能的操作

    与访问令牌关联的特权 TOKEN_PRIVILEGES令牌特权结构体,该结构体定义了访问令牌所拥有的一系列特权。其原型定义如下:  typedef struct _TOKEN_PRIVILEGES {  DWORD PrivilegeCount; //特权数量(数组的长度)  LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; //特权数组  } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;  其中,Privileges数组类型为 LUID_AND_ATTRIBUTES结构体,其原型定义如下:  typedef struct _LUID_AND_ATTRIBUTES {  LUID Luid; //局部唯一标识符,代表某种特权的Value  DWORD Attributes; //Luid的属性,代表特权的属性(Enabled or Disabled)  } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;  其特权属性Attributes可以是如下常量:  
    含义
    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的用户认证方案。Token是什么Token是一个身份凭证,有个很贴切的翻译叫“令牌”。发给你一个令牌,你在遇到关卡的时候出示令牌,证明自己的身份。Token的概念广泛应用...

    前言

    前几天谈一个合作,写了份技术文档。对方看了之后抛出萌新三连:什么是token?怎么生成?有什么用?

    本文简单介绍token,并介绍基于token的用户认证方案。

    Token是什么

    Token是一个身份凭证,有个很贴切的翻译叫“令牌”。发给你一个令牌,你在遇到关卡的时候出示令牌,证明自己的身份。

    87e4615c6aec7c943f2c1ec4593a8fbb.png

    Token的概念广泛应用于许多领域。比如区块链中,比特币和以太坊的“代币”,形式也是token。本文具体讨论的是用于网站登录态的Token方案。

    Access Token方案

    573a7ded330704745b308a3a505a38c2.png

    注意,登录这一步的关键是验证用户身份,不一定是用户名/密码的登录接口,也可以是其他方式,只要保证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)相关内容。

    793bac12651d30ff7e689ae7d60c450a.png

    展开全文
  • token什么

    2020-12-14 16:52:42
    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道这个东西,但却不知道为什么他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入...
  • 令牌环网中一个令牌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:20
    2、为什么用token? 产生背景: 试想下如果人知道了你的请求接口,如果他在不登录的情况下,恶意调用你的删除接口,随意删除你的数据,这样是不是会给你造成很大的麻烦,所以每次你调用接口时后台需要验证你是否...
  • Token介绍

    2020-12-28 16:32:52
    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道这个东西,但却不知道为什么他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的...
  • 参考:...那么,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:00
    1.什么是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:31
    Token,就是令牌,最大的特点就是随机性,不可预测。...那么,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来实现的。当客户端请求页面时,服务器会...

空空如也

空空如也

1 2 3 4 5 6
收藏数 112
精华内容 44
关键字:

token令牌有什么用