app与后台的token、sessionId、RSA加密登录认证与安全解决方案

这篇具有很好参考价值的文章主要介绍了app与后台的token、sessionId、RSA加密登录认证与安全解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1.2 登录状态token

再仔细核对上述登录流程, 我们发现服务器判断用户是否登录, 完全依赖于sessionId, 一旦其被截获, 黑客就能够模拟出用户的请求。于是我们需要引入token的概念: 用户登录成功后, 服务器不但为其分配了sessionId, 还分配了token, token是维持登录状态的关键秘密数据。在服务器向客户端发送的token数据,也需要加密。于是一次登录的细节再次扩展。

  • 客户端向服务器第一次发起登录请求(不传输用户名和密码)。

  • 服务器利用RSA算法产生一对公钥和私钥。并保留私钥, 将公钥发送给客户端。

  • 客户端收到公钥后, 加密用户密码,向服务器发送用户名和加密后的用户密码; 同时另外产生一对公钥和私钥,自己保留私钥, 向服务器发送公钥; 于是第二次登录请求传输了用户名和加密后的密码以及客户端生成的公钥。

  • 服务器利用保留的私钥对密文进行解密,得到真正的密码。 经过判断, 确定用户可以登录后,生成sessionId和token,同时利用客户端发送的公钥,对token进行加密。最后将sessionId和加密后的token返还给客户端。

  • 客户端利用自己生成的私钥对token密文解密, 得到真正的token。

1.2 登录保持


在最原始的方案中, 登录保持仅仅靠服务器生成的sessionId: 客户端的请求中带上sessionId, 如果服务器的redis中存在这个id,就认为请求来自相应的登录客户端。 但是只要sessionId被截获, 请求就可以为伪造, 存在安全隐患。

引入token后,上述问题便可得到解决。 服务器将token和其它的一些变量, 利用散列加密算法得到签名后,连同sessionId一并发送给服务器; 服务器取出保存于服务器端的token,利用相同的法则生成校验签名, 如果客户端签名与服务器的校验签名一致, 就认为请求来自登录的客户端。

1.3 TOKEN失效


用户登录出系统

失效原理:

在服务器端的redis中删除相应key为session的键值对。

二、 散列算法

=======

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

散列算法可以用来加密token生成签名, 以便token信息不暴露在网络同时还能验证登录的有效性。

2.1 md5


全写: Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

输出: 128bit

MD5算法具有以下特点:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。

  2. 容易计算:从原数据计算出MD5值很容易。

  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

  4. 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

  5. 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

缺陷:

Md5一度被认为十分靠谱。

2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。

2009年,冯登国、谢涛二人利用差分攻击,将MD5的碰撞算法复杂度从王小云的242进一步降低到221,极端情况下甚至可以降低至210。仅仅221的复杂度意味着即便是在2008年的计算机上,也只要几秒便可以找到一对碰撞。

Md5已老, 在安全性要求较高的场合,不建议使用。

2.2 sha1


全名: 安全哈希算法(Secure Hash Algorithm)

输出: 160bit

2.2.1 与Md5比较

相同点:

因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似。

不同点:

1. 对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

2. 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

3. 速度:在相同的硬件上,SHA-1的运行速度比MD5慢

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

最后

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

高级UI与自定义view;
自定义view,Android开发的基本功。

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

NDK开发;
未来的方向,高薪必会。

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

前沿技术;
组件化,热升级,热修复,框架设计

app与后台的token、sessionId、RSA加密登录认证与安全解决方案,2024年程序员学习,安全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多

当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。

不出半年,你就能看出变化!

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录文章来源地址https://www.toymoban.com/news/detail-849976.html

到了这里,关于app与后台的token、sessionId、RSA加密登录认证与安全解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问

    使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥。 创建一个get请求,将后端生成的公钥发送给前端,需要注意,这里生成的公钥是XML格式需要转换为pkcs8格式,前端JS只能处理pkcs8格式,私钥不能发给前端!!!! 这里需要安装一个包XC.RSAUtil用于转换格式。 Install-Package XC.RSA

    2024年02月08日
    浏览(48)
  • Springboot+redis实现token的登录认证

    1.在用户登录后,如果要访问其他路径下的资源的话,我们是否还需要再验证一遍呢?而且我们登陆上系统长时间不操作的话还需不需要再次验证?所以这种情况下就很需要token来实现登录功能。并通过redis(redis是一个key-value存储系统,它支持存储的value类型相对更多,包括

    2023年04月09日
    浏览(95)
  • Django用RSA实现Web登录加密传输,预防抓包泄漏密码,解决ModelForm无法实现传输加密问题

    问题:         在使用Django学习制作网站时候,以为后端钩子处理使用了md5加密,数据库中也同样以md5的方式存储,这样就解决了密码泄漏问题,因为对前端没有足够的了解所以枉下次定论。         在测试爬取自己的网站时候发现,登录页面控制台能抓包看见密码明

    2024年02月01日
    浏览(77)
  • SpringSecurity实现前后端分离登录token认证详解

    目录 1. SpringSecurity概述 1.1 权限框架 1.1.1 Apache Shiro 1.1.2 SpringSecurity 1.1.3 权限框架的选择 1.2 授权和认证 1.3 SpringSecurity的功能 2.SpringSecurity 实战 2.1 引入SpringSecurity 2.2 认证 2.2.1 登录校验流程  2.2.2 SpringSecurity完整流程  2.2.3 认证流程详解 2.3 思路分析 2.4 代码实战 2.4.1  自定义

    2024年02月08日
    浏览(47)
  • RSA加密为什么能保证安全

    一、原则:公钥机密、私钥解密、私钥签名、公钥验签 公钥私钥都可以加密和解密数据,但是因为持有公钥和私钥的人不同,在具体的使用场景中,公私钥的使用方式,也是有明确规定的。 公钥加密/私钥解密: 因为公钥是暴露在外的,私钥确实某个人单独持有的,当使用私

    2024年02月16日
    浏览(38)
  • Django的后台认证登录系统,登录多久之后失效呢

    Django的后台认证登录系统的会话失效时间可以通过 SESSION_COOKIE_AGE 设置来控制,默认值是1209600秒(即两周)。如果你没有对这个设置进行更改,那么用户在登录后两周内如果没有再次登录,会话就会失效。 如果你想更改这个默认的会话失效时间,可以在你的Django项目的 sett

    2024年01月20日
    浏览(43)
  • 前后端通信安全RSA+AES混合加密

    前后端安全通信一直是头疼的问题,如何保证前后端安全通信? 读完这篇文章教你学会前后端安全通信。 客户端向服务端获取资源(如:html/css/js/jpg/json/api接口数据)的过程需要通信,常见的通信有TCP/UDP等。 通信安全是指用户在使用登录、注册、用户列表等功能时请求被拦

    2023年04月08日
    浏览(37)
  • springBoot JWT实现websocket的token登录拦截认证

    功能:所有关于websocket的请求必须登录,实现websocket需要登录后才可使用,不登录不能建立连接。 后台spring security配置添加websocket的请求可以匿名访问,关于websocket的请求不要认证就可以随意访问,去除匿名访问后,前端在与websocket建立链接无法在请求头里直接加入Authoriz

    2024年02月13日
    浏览(48)
  • SpringBootWeb 登录认证[Cookie + Session + Token + Filter + Interceptor]

    目录 1. 登录功能 1.1 需求 1.2 接口文档 1.3 登录 - 思路分析 1.4 功能开发 1.5 测试 2. 登录校验 2.1 问题分析 什么是登录校验? 我们要完成以上登录校验的操作,会涉及到Web开发中的两个技术: 2.2 会话技术 2.2.1 会话技术介绍 会话跟踪  2.2.2 会话跟踪方案 2.2.2.1 方案一 - Cookie

    2024年02月20日
    浏览(41)
  • 前后端分离架构下使用 Sa-Token 完成登录认证

    目前绝大多数系统都已经采用 “前后端分离” 架构来设计了,传统的Session模式鉴权也不再适合这种架构(或者需要额外写很多的代码来专门适配)。 Sa-Token 是一个 java 轻量级权限认证框架,专为前后端分离架构打造,主要解决登录认证、权限认证、单点登录、OAuth2、微服务

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包