当前位置: 首页 >  网络应用 >  十年后的第一篇:记录对两个面试问题的思考

十年后的第一篇:记录对两个面试问题的思考

导读:太久没写过博客了,用户名密码甚至连用哪个邮箱注册的都不记得了,如果不是最近面试官要看的话实在是不想翻出来(如果面试官看到请不要在意)。.面试过程中被问了一些刁钻的问题(当然,也不是故意刁难),其中有两个问题值得记录一下——不是因为问题本身,虽然问题本身也有点意思,但更主要还是趁自

太久没写过博客了,用户名密码甚至连用哪个邮箱注册的都不记得了,如果不是最近面试官要看的话实在是不想翻出来(如果面试官看到请不要在意)。

面试过程中被问了一些刁钻的问题(当然,也不是故意刁难),其中有两个问题值得记录一下——不是因为问题本身,虽然问题本身也有点意思,但更主要还是趁自己还没忘的时候记一下当时没考虑到的情况。

1、SSO的吊销机制

SSO通常有因为种种原因需要对token/ticket进行吊销的情况,在此之前我的设计思路是认证服务通过与业务服务连接的可靠信道发送吊销指令,这部分本身没什么问题,但是考虑到这是个安全机制,假如设计上只考虑了对有效期内的token/ticket进行吊销的话,可能会遭遇对服务器时间差的exploit,比方说很多人听说过有些机器运行了几天时钟就慢下去了,假如遇到这种情况的话在token/ticket吊销后业务服务器比认证服务器的时间慢了多少攻击者就有多少时间继续用token/ticket胡作非为。

解决这个问题有几种思路:

最死板的做法是吊销指令保存时间比被吊销的token/ticket还要长一些,只要它超过了业务服务与认证服务之间可能产生的时间误差就没事;

不那么死板的做法是所有服务都通过统一的授时中心进行时间校准,如果服务器一段时间无法联系到授时中心就发出警告并准备暂停运作;

还有一种情况是假如业务服务器存在某种可以直接前后调整时间的小漏洞的话,以上两种做法都无法彻底解决问题,所以针对这种情况进行防御需要在一个相对可靠的持久位置记录最后一次对吊销指令本身进行清理掉时业务服务器的本地时间,并且一旦在解码token/ticket时发现本地时间早(慢)于已记录的时间则中止鉴权过程并报警。

当然,由于我对SSO实施的经验并不多,以上思路难免有考虑不周的地方,请任何读到本文的人不要以此作为实施标准。

2、docker的实现原理

被问到这个问题时我的第一反应是也许需要像在Windows上一样通过所谓的APIHOOK技术来劫持系统调用;后来仔细一琢磨其实结合*nix万物皆文件的哲学,可能overlayfs就把一切全包了吧?

短期内没有深入研究docker原理的想法,如果我猜得不对欢迎指正;同前一个问题,依旧不要把我的思考当作答案。

内容
  • 计算机网络概念汇总
    计算机网络概念汇总
    2023-12-05
    1. 模型结构.五层模型 :.应用层、传输层、网络层、数据链路层、物理层。.应用层 :为应用程序提供交互服务。在互联网中
  • UE开发使用Rider时缓存干爆C盘的解决方案
    UE开发使用Rider时缓存干爆
    2023-12-03
    我们在使用Rider开发UE时,Ride会为每一个项目创建一个解决方案缓存,如果开几个新项目写测试demo,我们的C盘会
  • Unity3D 横板跳跃游戏半成品demo源代码
    Unity3D 横板跳跃游戏半成
    2023-12-08
    项目介绍:.基于B站的 Unity3D新手教程 进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复
  • 数据分析师如何用SQL解决业务问题?
    数据分析师如何用SQL解决业务问
    2023-12-03
    本文来自问答。.提问:数据分析人员需要掌握sql到什么程度?.请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?
  • Unity 中的存档系统(本地存档)
    Unity 中的存档系统(本地存
    2023-12-09
    思想.在游戏过程中,玩家的背包、登录、人物系统都与数据息息相关,无论是一开始就设定好的默认数据,还是可以动态存取的数据,
  • unity 实现自定义class深度拷贝 deep copy 深度复制 引用类型复制
    unity 实现自定义class
    2023-12-09
    气死我了,搜半天没有,全让序列化再反序列化,又不方便又不美观。结果自己试着一写就通,两行完事。.首先先安装Newtons