参考:http://blog.csdn.net/sum_rain/article/details/37085771

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***。

所以,安全和高效相对的。具体问题具体对待吧。

此外,要避免“加token但不进行校验”的情况,在session中增加了token,但服务端没有对token进行验证,根本起不到防范的作用。

还需注意的是,对数据库有改动的增删改操作,需要加token验证,对于查询操作,一定不要加token,防止***者通过查询操作获取token进行csrf***。但并不是这样***者就无法获得token,只是增大***成本而已。

转载于:https://blog.51cto.com/1inux/1717982

web安全之token相关推荐

  1. Web基础:Token

    传统身份验证的方法 1.HTTP是一种没有状态的协议,也就是它并不知道是谁是访问应用     ⑴客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下用户名密码,这样 ...

  2. 基于JWT(Json Web Token)的授权方式

    JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态.分布式的Web应用授权: 从客户端请求服务器获取token, 用该token 去访问实现了jwt认证的web服务器. token 可保存 ...

  3. Web Service 安全性解决方案(SOAP篇)

    拼吾爱程序人生 » 软件编程 » Visual Studio.NET » Web Service » Web Service 安全性解决方案(SOAP篇) Web Service 安全性解决方案(SO ...

  4. 彻底理解cookie,session,token

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 1.很 ...

  5. 彻底理解 Cookie,Session,Token

    点击上方视学算法,选择 设为星标 优质文章,及时送达 作者 | 墨颜  链接 | www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web基本上就是 ...

  6. 一文搞定cookie,session,token

    作者丨 墨颜 来源:cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间 ...

  7. http 三种认证方式 Basic Session Token 简介

    目录 1. 概述 2. HTTP Basic 认证 3. Session 认证 4. Token 认证 1. 概述 本文简介 HTTP Basic,Session,Token 三种认证方法. Basi ...

  8. 手动生成token_手动设计简单的Token验证

    简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...

  9. 手动设计简单的Token验证

    简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...

最新文章

  1. tomcat报错LifecycleException的解决方案
  2. python爬虫项目-32个Python爬虫项目让你一次吃到撑
  3. 生成sql 脚本没有索引
  4. 多线程开发之---线程等待
  5. ai作文批改_全球第一份机器人批改的作文 阿里AI批改中文试卷
  6. ehcache springboot_Spring Boot应用缓存实践之:Ehcache加持
  7. Java:出生日期转年龄
  8. 什么是Docker?看这一篇干货文章就够了!
  9. 基于鸿蒙Hi3861和华为云平台的烟雾报警器
  10. 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
  11. 北大先修课 计算机,解读:北大清华大学先修课的那些事
  12. Matlab基本知识概况
  13. panoramic image view 全景照片查看器
  14. 慕课python第六周测验答案_大学慕课2020Python编程基础章节测验答案
  15. gradle下载慢的问题
  16. 在开放社区中的六年,我做着喜欢且擅长的事情,利他而自利
  17. MyEclipse中如何修改项目的编码格式
  18. TED1984-2019全部中英对照演讲稿集 学习英文演讲写作的好帮手
  19. 全球排名第一的免费开源ERP Odoo替代料管理应用解决方案
  20. OSChina 周四乱弹 —— 每次我穿短裙的时候

热门文章

  1. 中国如何成为一流国家
  2. 从春晚说起:总有一种无耻让我们泪流满面
  3. Elasticsearch 安装和使用
  4. PrestaShop 网站漏洞修复办法
  5. Dockefile CentOS SSH 服务的实现
  6. LINUX文件、目录权限及相关操作命令
  7. [译]ASP.NET Core 2.0 部分视图
  8. 重写了博客上的代码着色脚本
  9. 绝对巨星-罗伯特·巴乔
  10. 文本超出显示省略号/数字英文字母折行有关css 属性/显示两行,第二行省略号显示css方法...