web安全之token
参考: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相关推荐
- Web基础:Token
传统身份验证的方法 1.HTTP是一种没有状态的协议,也就是它并不知道是谁是访问应用 ⑴客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下用户名密码,这样 ...
- 基于JWT(Json Web Token)的授权方式
JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态.分布式的Web应用授权: 从客户端请求服务器获取token, 用该token 去访问实现了jwt认证的web服务器. token 可保存 ...
- Web Service 安全性解决方案(SOAP篇)
拼吾爱程序人生 » 软件编程 » Visual Studio.NET » Web Service » Web Service 安全性解决方案(SOAP篇) Web Service 安全性解决方案(SO ...
- 彻底理解cookie,session,token
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 1.很 ...
- 彻底理解 Cookie,Session,Token
点击上方视学算法,选择 设为星标 优质文章,及时送达 作者 | 墨颜 链接 | www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web基本上就是 ...
- 一文搞定cookie,session,token
作者丨 墨颜 来源:cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间 ...
- http 三种认证方式 Basic Session Token 简介
目录 1. 概述 2. HTTP Basic 认证 3. Session 认证 4. Token 认证 1. 概述 本文简介 HTTP Basic,Session,Token 三种认证方法. Basi ...
- 手动生成token_手动设计简单的Token验证
简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...
- 手动设计简单的Token验证
简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...
最新文章
- tomcat报错LifecycleException的解决方案
- python爬虫项目-32个Python爬虫项目让你一次吃到撑
- 生成sql 脚本没有索引
- 多线程开发之---线程等待
- ai作文批改_全球第一份机器人批改的作文 阿里AI批改中文试卷
- ehcache springboot_Spring Boot应用缓存实践之:Ehcache加持
- Java:出生日期转年龄
- 什么是Docker?看这一篇干货文章就够了!
- 基于鸿蒙Hi3861和华为云平台的烟雾报警器
- 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
- 北大先修课 计算机,解读:北大清华大学先修课的那些事
- Matlab基本知识概况
- panoramic image view 全景照片查看器
- 慕课python第六周测验答案_大学慕课2020Python编程基础章节测验答案
- gradle下载慢的问题
- 在开放社区中的六年,我做着喜欢且擅长的事情,利他而自利
- MyEclipse中如何修改项目的编码格式
- TED1984-2019全部中英对照演讲稿集 学习英文演讲写作的好帮手
- 全球排名第一的免费开源ERP Odoo替代料管理应用解决方案
- OSChina 周四乱弹 —— 每次我穿短裙的时候