token

JWT (上):认识 JSON Web Token

不羁的心 提交于 2019-12-16 07:23:33
什么是 JWT? JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,作为JSON对象在各方之间安全的传递信息。这个信息可以通过数字签名进行验证并信任。JWTs 可以使用密钥(结合HMAC算法)或者 使用RSA、ECDSA加密的公钥私钥对进行签名。 尽管JWTs能够在各方之间也提供安全加密,但是仍专注于签名Token。当其他方隐藏了加密Token的某些声明时,签名Token可以验证声明的完整性。当Token使用公钥私钥对进行签名时,这个签名还能证明只有拥有私钥的一方才是签发它的一方。 什么时候使用 JWT ? 授权 :这是JWT最普遍的使用场景了。当用户登录之后,每次请求都包含JWT,允许用户访问那些只有携带token才能访问的路由、服务、资源。如今在单点登录中广泛使用了JWT,因为JWT体积小,且能够在不同域名之间被使用。 信息交换 :JWT是一种在各方之间安全传输信息的好方式。因为JWTs能够签名,比如使用公钥私钥对,你能够确定发送者的身份。另外,签名是使用header和payload计算而来,所以你也可以验证内容是否被篡改。 JWT的结构 jwt 包含三部分,之间以点(.)分隔 Header(头部) Payload(负载) Signature(签名) 一个典型的jwt如同下面这样: xxxxx.yyyyy.zzzzz

渗透测试之Dina-v1.0

余生颓废 提交于 2019-12-16 04:21:38
0x00 信息搜集 主机发现: 端口扫描:只开放了80端口,只能从web服务入手 上面显示存在robots.txt。 接着查看robots.txt 分别浏览目录,发现一个nothing文件夹存在敏感信息:显示较多密码,可以搜集起来组合成为一个字典,可能存在用处。 其余目录都是这个亚子的: 尝试进行一下目录扫描:发现一个robots中没有显示的目录:secure 0x01 渗透测试过程: 访问secure发现存在一个压缩包,但是存在密码,将之前的密码全部导入,尝试爆破,密码为freedom: 扩展名是mp3文件,但是打开显示失败,用文件类型分析工具没有匹配到特征码: 直接用记事本打开,发现是一个文本文件,里面有下一步的提示: 访问上面的url,找到系统后台,更加文本的提示,登录名是touhid,密码是一个弱口令,使用之前按拿到的密码字典尝试爆破。(因为存在token校验,所以只能手动爆破),然后获取到正确的密码diana,成功进入后台: 在找到后台的同时发现是playSMS的系统,尝试使用searchexploit查找可用的漏洞,发现存在较多,但是都是需要登录后台: 经过尝试存在文件文件上传位置的命令执行,且有可利用的msf框架: 使用相应的模块,然后配置参数,一键攻击成功。 其中有一个很重要的点就是设置漏洞路径,如果文件上传的路径不正确就无法成功攻击。 0x02 手动测试

1分钟带你理解Java Web开发必掌握的:Token ,Cookie,Session

非 Y 不嫁゛ 提交于 2019-12-16 00:36:33
在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用Cookie实际上只能存储一小段的文本信息。 例如:登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是Cookie。 Session Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的SessionID和Session内容,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息、固定变量等),这个数据可以保存在集群、数据库、文件中,用于跟踪用户的状态。 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。 用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会为该用户创建一个SessionId,并在响应内容(Cookie)中将该SessionId一并返回给浏览器

1分钟带你理解Java Web开发必掌握的的:Token ,Cookie,Session

时光总嘲笑我的痴心妄想 提交于 2019-12-16 00:22:22
在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用Cookie实际上只能存储一小段的文本信息。 例如:登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是Cookie。 Session Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的SessionID和Session内容,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息、固定变量等),这个数据可以保存在集群、数据库、文件中,用于跟踪用户的状态。 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。 用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会为该用户创建一个SessionId,并在响应内容(Cookie)中将该SessionId一并返回给浏览器

Spring Boot Security 整合 JWT 实现 无状态的分布式API接口

橙三吉。 提交于 2019-12-15 23:54:55
简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。 JSON Web Token 入门教程 - 阮一峰 ,这篇文章可以帮你了解JWT的概念。本文重点讲解Spring Boot 结合 jwt ,来实现前后端分离中,接口的安全调用。 快速上手 之前的文章已经对 Spring Security 进行了讲解,这一节对涉及到 Spring Security 的配置不详细讲解。若不了解 Spring Security 先移步到 Spring Boot Security 详解 。 建表 DROP TABLE IF EXISTS `user`; DROP TABLE IF EXISTS `role`; DROP TABLE IF EXISTS `user_role`; DROP TABLE IF EXISTS `role_permission`; DROP TABLE IF EXISTS `permission`; CREATE TABLE `user` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `role` ( `id

自己写token类(无视jwt)

喜夏-厌秋 提交于 2019-12-15 23:54:47
token表结构: 登录判断: 如果用户名、密码输入正确,先在数据库中找该user_id对应的token记录,如果没有记录或者该记录的过期时间已过期或者该记录已被标记为删除状态,则根据user_id、设备号、加密随机字符生成一个token值,否则将其它的记录标记为已删除(把其它设备上用该user_id登录的账号挤下线),同时生成一条新记录。 token身份验证 前台传过来token值和数据库中的token值做比较,如果数据库中存在这个token值,并且token值在有效期范围内,而且token值的删除状态正常,则根据token值找到user_id,根据user_id找到用户要的信息传给前端,否则验证失败,给前端一个错误代码。 来源: 51CTO 作者: Lee_吉 链接: https://blog.51cto.com/12173069/2058209

springboot+shiro+jwt

大憨熊 提交于 2019-12-15 23:54:31
JWTUtil 我们利用 JWT 的工具类来生成我们的 token,这个工具类主要有生成 token 和 校验 token 两个方法 生成 token 时,指定 token 过期时间 EXPIRE_TIME 和签名密钥 SECRET ,然后将 date 和 username 写入 token 中,并使用带有密钥的 HS256 签名算法进行签名 Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); Algorithm algorithm = Algorithm.HMAC256(SECRET); JWT.create() .withClaim("username", username) //到期时间 .withExpiresAt(date) //创建一个新的JWT,并使用给定的算法进行标记 .sign(algorithm); 数据库表 role: 角色;permission: 权限;ban: 封号状态 每个用户有对应的角色(user,admin),权限(normal,vip),而 user 角色默认权限为 normal, admin 角色默认权限为 vip(当然,user 也可以是 vip) 过滤器 在上一篇文章中,我们使用的是 shiro 默认的权限拦截 Filter,而因为 JWT 的整合

JWT(JSON Web Token)

耗尽温柔 提交于 2019-12-15 20:13:26
什么是JWT? JWT全称JSON Web Token是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。 头部(Header) 头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。 {“typ”:“JWT”,“alg”:“HS256”} 在头部指明了签名算法是HS256算法。 我们进行BASE64编码。 编码后的字符串如下: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 载荷(playload) 载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分 1.标准中注册的声明(建议但不强制使用) iss: jwt签发者 sub: jwt所面向的用户 aud: 接收jwt的一方 exp: jwt的过期时间,这个过期时间必须要大于签发时间 nbf: 定义在什么时间之前,该jwt都是不可用的. iat: jwt的签发时间 jti: jwt的唯一身份标识,主要用来作为一次性token。 2.公共的声明 公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密. 3.私有的声明

leetcode150.逆波兰表达式求值

核能气质少年 提交于 2019-12-15 19:22:55
1.题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: "3+2*2" 输出: 7 示例 2: 输入: " 3/2 " 输出: 1 示例 3: 输入: " 3+5 / 2 " 输出: 5 说明: 你可以假设所给定的表达式都是有效的。 请不要使用内置的库函数 eval。 2.解题思路 参考链接:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/solution/ji-yu-zhan-qiu-jie-by-jalan/ 3.代码实现 class Solution(object): def evalRPN(self, tokens): """ :type tokens: List[str] :rtype: int """ stack = [] for token in tokens: if token == "+" or token == "-" or token == "*" or token == "/": sec = stack.pop(-1) fir = stack.pop(-1) if token == "+": ans = fir + sec elif token =

Token的理解

ε祈祈猫儿з 提交于 2019-12-15 18:20:11
不久前,我在在前后端分离实践中提到了基于 Token 的认证,现在我们稍稍深入一些。 通常情况下,我们在讨论某个技术的时候,都是从问题开始。那么第一个问题: 为什么要用 Token? 而要回答这个问题很简单——因为它能解决问题! 可以解决哪些问题呢? Token 完全由应用管理,所以它可以避开同源策略 Token 可以避免 CSRF 攻击 Token 可以是无状态的,可以在多个服务间共享 Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。 于是,又一个问题产生了: 需要为 Token 设置有效期吗? 需要设置有效期吗? 对于这个问题,我们不妨先看两个例子。一个例子是登录密码,一般要求定期改变密码,以防止泄漏,所以密码是有有效期的;另一个例子是安全证书。SSL 安全证书都有有效期,目的是为了解决吊销的问题,对于这个问题的详细情况,来看看知乎的回答。所以无论是从安全的角度考虑,还是从吊销的角度考虑,Token 都需要设有效期。 那么有效期多长合适呢? 只能说,根据系统的安全需要,尽可能的短,但也不能短得离谱——想像一下手机的自动熄屏时间,如果设置为 10