开发者社区> 浅羽技术> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

权限认证常见面试题

简介: 权限认证常见面试题
+关注继续查看

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

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

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

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

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

二、Cookie和Session有什么区别?

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

当服务器tomcat第一次接收到客户端的请求时,会开辟一块独立的session空间,建立一个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("Set-Cookie","cookiename=cookievalue;HttpOnly")。

3、增加token;

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
分布式事务常见面试题解答
分布式事务常见面试题解答
34 0
MySQL常见面试题
关于MySQL常见的面试题
15 0
面试经验--软件测试常见面试题(下)
不管你是想做软件功能测试、软件安全测试、软件测试开发等,只要跟软件测试或软件质量沾边,那么工作中都必须具备一定的软件测试理论知识;并且求职测试或质量保证相关岗位的面试过程,可能必问一两个的软件测试理论的问题,来考察对应聘者的软件测试思维或是对软件测试的认识
36 0
Java常见面试题:抽象类
首先针对抽象类应该有一个核心的认识:抽象类只是一个比普通类多了抽象方法的类而已,其它的结构上和普通类是差不多的。还有一个使用上的区别就是抽象类无法直接使用关键字new进行对象的实例化控制。
2619 0
最常见Python面试题及答案:说说Python变量、函数、类的命名规则
最常见Python面试题及答案:说说Python变量、函数、类的命名规则
6426 0
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
《Java集合详解系列》是我在完成夯实Java基础篇的系列博客后准备开始写的新系列。 这些文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star、fork哈 文章首发于我的个人博客: www.how2playlife.com 今天我们来探索一下HashMap和HashTable机制与比较器的源码。
2457 0
常见List面试问题
List的相关文章,没有太多想写的,早先的时候有提到过两篇 ArrayList VS LinkedList ArrayList扩容原理 除此之外还有一些经常被问到的问题,我从Hollis的知识星期收集一下,用到这里,供一起学习 问题 Java 中...
1076 0
多线程常见的面试题
多线程常见的面试题如下: ============================================================================= 1:多线程有几种实现方案,分别是哪几种? 两种。
829 0
二叉树中常见的面试题
1 用一个函数判断一棵树是否平衡 题目:实现一个函数检查一棵树是否平衡。对于这个问题而言, 平衡指的是这棵树任意两个叶子结点到根结点的距离之差不大于1。 注意,对于这道题,要审清题意。它并不是让你判断一棵树是否为平衡二叉树。
1302 0
+关注
浅羽技术
才疏学浅,习习而为,分享一些IT行业信息技术知识。
117
文章
6
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载