token相对安全加密算法

http://blog.csdn.net/q8649912/article/details/52370565

关于文章的理解

1 sessionid

这个名词应该理解为:一个http客户端在服务端的一个标识,仅此而已,他唯一性的标识了一个客户端,但是其作用却很关键,他的关键作用在于token的生成。

2 真实的http登陆请求详细过程(非前后端分离,如jsp,asp.net)

1)浏览器无论如何都会向服务器发送一次请求,服务器获取sessionid和token,判断有无登录。如果没有,那么生成密钥对,缓存sessionid,将公钥和sessionid发送到http响应中,也就是交给客户端,重定向到登陆页

2)浏览器提交登陆表单,携带sessionid,和使用公钥加密的密码,服务区接收到这些信息,这时候sessionid唯一性的标识客户端很关键,通过sessionid拿到缓存在服务器的私钥,进行密码解密,解密后完成用户名,密码验证。接下来降低sessionid的关键作用一步,在验证通过后生成token,使用token为关键点缓存登陆会话相关信息,如权限等。服务器将sessionid,使用客户端公钥加密token交给客户端

3)客户端用私钥解密token,由于rsa加密算法每次加密结果都不一样,所以这里在浏览器与服务器传输中的加密token一直处于变化中。客户端完成相关操作后向发服务器再次发生请求,私钥加密token,将sessionid和token一些其他起脚信息交给服务器,这个时候就算是黑客拿到token,sessionid也没有用

4)服务器接收将token解密,然后获取token映射的信息进行处理,即便是黑客能够拿到这一次的加密token,请求成功,服务器加密后返回给客户端,客户端需要正确解密和加密后才会进入下一次交互过程,如果服务端发现黑客还是拿着上一次的token来请求自然就会解密失败,自然的请求也就失败了

5)作为黑客来说吃亏就在于rsa每一次加密结果不一致造成的,那么黑客可以分析客户端的加解密程序,并拿到私钥才能进行伪装成功,但这也是比较费技术的,那么另外一种就是每一次都可以截取正常加密后的token就可以很好的伪装了

6)为了解决这个问题呢,引入证书了,由于证书的存在,即便是你每次能截取到加密token但是没有证书相关信息也是不行的

7)大魔法ssl可以非常有效解决这种问题,但是ssl非常复杂,我也不咋个了解,所以暂时就这样吧

3 sessionid的生命周期sessionid在密码验证,token生成过程中非常关键,也就是验证过程,但是之后就失去了这个关键作用了。这个作用失去就是在会话维持阶段基本没什么用了。

Token安全的更多相关文章

  1. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  2. WebApi基于Token和签名的验证

    最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...

  3. 基于token的多平台身份认证架构设计

    基于token的多平台身份认证架构设计 1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...

  4. ASP.NET OAuth:解决refresh token无法刷新access token的问题

    最近同事用iOS App调用Open API时遇到一个问题:在access token过期后,用refresh token刷新access token时,服务器响应"invalid_gran ...

  5. ASP.NET OWIN OAuth:遇到的2个refresh token问题

    之前写过2篇关于refresh token的生成与持久化的博文:1)Web API与OAuth:既生access token,何生refresh token:2)ASP.NET OWIN OAuth: ...

  6. ASP.NET OWIN OAuth:refresh token的持久化

    在前一篇博文中,我们初步地了解了refresh token的用途——它是用于刷新access token的一种token,并且用简单的示例代码体验了一下获取refresh token并且用它刷新acc ...

  7. ASP.NET OAuth:access token的加密解密,client secret与refresh token的生成

    在 ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默认加密方法是: 1) System.Security.Crypt ...

  8. Web API与OAuth:既生access token,何生refresh token

    在前一篇博文中,我们基于 ASP.NET Web API 与 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授权方式( grant_t ...

  9. 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token

    OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮 ...

  10. 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token

    1. 场景 根据OAuth 2.0规范,该场景发生于下面的流程图中的(D)(E)节点,根据已经得到的authorization code获取access token. 2. 实现环境 DotNetOp ...

随机推荐

  1. Xshell配色方案推荐

    使用方法: 新建mycolor.xcs文件 复制粘贴如下代码,将文件导入,修改自己喜欢的字体即可 [mycolor] text=00ff80 cyan(bold)=00ffff text(bold)= ...

  2. hadoop学习笔记——用python写wordcount程序

    尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤. MapReduce任务以来H ...

  3. 网站用户行为分析——在Ubuntu下安装MySQL及其常用操作

    安装MySQL 使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本: sudo apt-get update #更新软件源 sudo apt-get install mysq ...

  4. Python学习 :常用模块(一)

    常用模块(一) 一.时间(time)模块 时间戳 (Timestamp):时间戳表示的是从1970年1月1日00:00:00为计时起点,到当前的时间长度 import time print(help( ...

  5. Django模板语言与视图(view)

    常用语法 {{  }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...

  6. Java基础—IO小结(二)缓冲流与其它流的使用

    一.缓冲流的使用 每个字节流都有对应的缓冲流: BufferedInputStream / BufferedOutputStream 构造器: 方法摘要与对应节点流类似 使用缓冲流实现文件复制:实际中 ...

  7. 北京Uber优步司机奖励政策(1月13日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 北京Uber优步司机奖励政策(12月28日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. java 面向对象一

    一 基础部分 1.基本数据类型 Java的八种基本数据类型不支持面向对象的编程机制,不具备“对象”的特性:没有成员变量.方法可以调用.java之所以提供这八种基本数据类型,是为了照顾程序员的传统习惯. ...

  10. 创建并运行第一个Django项目

    首先, 添加Django模块: 在CMD命令行输入 python -m django --version 查看Django版本: 创建第一个Django项目: 整个工程的目录结构: mysite目录是 ...