10.图灵学院-----阿里/京东/滴滴/美团整理----安全验证篇

简介: 10.图灵学院-----阿里/京东/滴滴/美团整理----安全验证篇

一、什么是认证和授权?如何设计一个权限认 证框架


认证: 就是对系统访问者的身份进行确认。 用户名密码登录、 二维码登录、手机短信登录、指纹、刷脸。。。

授权:就是对系统访问者的行为进行控制。授权通常是在认证之后,对系统内的用户隐私数据进行保护。后台接口访问权限、前台控件的访问权限。

RBAC模型: 主体 -》 角色 -》 资源 -》访问系统的行为。

认证和授权也是对一个权限认证框架进行扩展的两个主要的方面。


二、Cookie和Session有什么区别?

三、如果没有Cookie,Session还能进行身份 验证吗?


当服务器tomcat第一次接收到客户端的请求时,会开辟一块独立的sessio空间,建立一个session对象,同时会生成一个session id,通过响应头的方式保存到客户端浏览器的cookie当中。以后客户端的每次请求,都会在请求头部带上这个session id,这样就可以对应上服务端的一些会话的相关信息,比如用户的登录状态。如果没有客户端的Cookie,Session是无法进行身份验证的。

当服务端从单体应用升级为分布式之后,cookie+session这种机制要怎么扩展?

1、session黏贴: 在负载均衡中,通过一个机制保证同一个客户端的所有请求都会转发到同一个tomcat实例当中。问题: 当这个tomcat实例出现问题之后,请求就会被转发到其他实例,这时候用户的session信息就丢了。

2、session复制: 当一个tomcat实例上保存了session信息后,主动将session 复制到集群中的其他实例。问题: 复制是需要时间的,在复制过程中,容易产生session信息丢失。

3、session共享: 就是将服务端的session信息保存到一个第三方中,比如Redis。


四、什么是CSRF攻击?如何防止?


CSRF: Cross Site Requst Forgery 跨站请求伪造 一个正常的请求会将合法用户的session id保存到浏览器的cookie。这时候,如果用户在浏览器中打来另一个tab页, 那这个tab页也是可以获得浏览器的cookie。黑客就可以利用这个cookie信息进行攻击。

攻击过程:

1、某银行网站A可以以GET请求的方式发起转账操作。 www.xxx.com/transfor.do?accountNum=100&money=1000 accountNum表示目标账户。这个请求肯定是需要登录才可以正常访问的。

2、攻击者在某个论坛或者网站上,上传一个图片,链接地址是 www.xxx.com/transfer.do?accountNum=888&money=10000 其中这个accountNum就是攻击者-自己的银行账户。

3、如果有一个用户,登录了银行网站,然后又打开浏览器的另一个tab页,点击了这个图片。这时,银行就会受理到一个带了正确cookie的请求,就会完成转账。用户的钱就被盗了。

CSRF方式方式:

1、尽量使用POST请求,限制GET请求。POST请求可以带请求体,攻击者就不容易伪造出请求。

2、将cookie设置为HttpOnly : respose.setHeader(“SetCookie”,“cookiename=cookievalue;HttpOnly”)。

3、增加token;

在请求中放入一个攻击者无法伪造的信息,并且该信息不存在于cookie当中。

这也是Spring Security框架中采用的防范方式。


五、什么是OAuth2.0协议?有哪几种认证方 式?什么是JWT令牌?和普通令牌有什么区 别?


OAuth2.0是一个开放标准,允许用户授权第三方应用程序访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。

OAuth2.0协议的认证流程,简单理解,就是允许我们将之前的授权和认证过程交给

一个独立的第三方进行担保。

OAuth2.0协议有四种认证方式:

1、授权码模式


20210511162359725.png


2、简化模式


20210511162411726.png


3、密码模式

202105111624213.png


4、客户端模式


20210511162429196.png


在梳理OAuth2.0协议流程的过程中,其实有一个主线,就是三方参与者之家的信任程度。

普通令牌: b9f2eaa1-8715-4f03-86c7-06bf757a5f7c

普通令牌只是一个随机的字符串,没有特殊的意义。这就意味着,当客户带上令牌去访问应用的接口时,应用本身无法判断这个令牌是否正确,他就需要到授权服务器上去判断令牌是否有效。在高并发场景下,检查令牌的网络请求就有可能成为一个性能瓶颈。

改良的方式就是JWT令牌。将令牌对应的相关信息全部冗余到令牌本身,这样资源服务器就不再需要发送请求给授权服务器去检查令牌了,他自己就可以读取到令牌的授权信息。JWT令牌的本质就是一个加密的字符串!!

JWT令牌:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsic2FsYXJ5Il0sInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTYxNjY3MjM3OCwiYXV0aG9yaXRpZXMiOlsibW9iaWxlIiwic2FsYXJ5Il0sImp0aSI6ImI1MDg2OWE0LTIzZmEtNDg2Yy1hZGJlLTljNTlmMjRiMDY4YSIsImNsaWVudF9pZCI6ImMxIn0.tJ5d7RBKPj8d6w7826OqS6_2pDf_ZXvwkJHMO2uPVAg


六、什么是SSO?与OAuth2.0有什么关系?


OAuth2.0的使用场景通常称为联合登录。 一处注册,多处使用。

SSO Single Sign On 单点登录。 一处登录,多处同时登录。

SSO的实现关键是将Session信息集中存储。Spring Security


七、如何设计一个开放授权平台?


开放授权平台也可以按照认证和授权两个方向来梳理。

1、认证: 就可以按照OAuth2.0协议来规划认证的过程。

2、授权: 首先需要待接入的第三方应用在开放授权平台进行注册,注册需要提供几个必要的信息 clintID, 消息推送地址,密钥(一对公私钥,私钥由授权平台自己保存,公钥分发给第三方应用)。然后,第三方应用引导客户发起请求时,采用公钥进行参数加密,授权开放平台使用对应的私钥解密。

接下来:授权开放平台同步响应第三方应用的只是消息是否处理成功的结果。而真正的业务数据由授权开放平台异步推动给第三方应用预留的推送地址。

目录
相关文章
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
281 1
|
5月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
1335 0
|
移动开发 前端开发 JavaScript
HTML5作业(五)-----视频播放器设计
该实验旨在熟悉媒体API和响应式按钮事件,任务是构建一个自定义视频播放器。功能包括:播放/暂停、静音、视频缩放、切换上下文件及快进快退。代码提供了一个HTML结构,包含相应按钮和事件处理函数调用。CSS和JavaScript文件用于样式和功能实现。实验鼓励添加更多功能和美化界面。参考链接:[实验详情](https://blog.csdn.net/javayoungcoolboy/article/details/134275425)
250 0
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
447 0
|
应用服务中间件 Apache nginx
伪静态配置指南及示例
【7月更文挑战第8天】伪静态(也称URL重写或URL美化)是一种Web服务器技术,用于将动态页面的URL伪装成静态页面的URL形式,以此改善搜索引擎优化(SEO)、提高用户体验及隐藏技术实现细节。本文将介绍如何在Apache和Nginx两种常用的Web服务器上配置伪静态规则。
1314 0
|
数据采集 机器学习/深度学习 人工智能
数据清洗、数据处理入门!R语言我来了,数据不再零散!
「数据清洗」和「预处理」是数据科学中必不可少的一部分,它们能够帮助我们准确地分析和预测未来趋势。如果你曾经尝试过进行分析或建模,你会发现数据往往不像我们所想象的那样干净、整洁。需要对数据进行仔细的检查、清理和处理,才能真正把数据转变成有用的信息。
870 0
|
存储 XML 监控
Android 应用安全机制实现方案探究
APP开发完成后,需要进行加固、签名等安全操作,若应用不做任何安全防护,极易被病毒植入、广告替换、支付渠道篡改、钓鱼、信息劫持等,严重侵害开发者的利益。App 加固后,可以对应用进行安全防护,防止应用分发后,被反编译、调试、盗版、破解、二次打包等威胁,维护开发者的利益。除了对APP进行加固操作,还需要进行签名。APP通过对 Apk 进行签名,开发者可以证明对 Apk 的所有权和控制权,可用于安装和更新其应用。而在 Android 设备上安装 Apk ,如果是一个没有被签名的 Apk,则会被拒绝安装。
719 1
Android 应用安全机制实现方案探究
阿里大牛都在读的10本Java实战书籍,Java开发进阶必备书单
关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。
|
前端开发 JavaScript Java
【Spring Boot+Vue.js+JPA+Mysql】实现前后端分离的名片系统(附源码 超详细必看 可作为大作业使用)
【Spring Boot+Vue.js+JPA+Mysql】实现前后端分离的名片系统(附源码 超详细必看 可作为大作业使用)
649 0
|
人工智能 算法 数据可视化
Intel 开源新作 | ZoeDepth: 第一个结合相对和绝对深度的多模态单目深度估计网络
Intel 开源新作 | ZoeDepth: 第一个结合相对和绝对深度的多模态单目深度估计网络
1731 0