本期概要
- 话题:2022年1月31号之后提交的应用需提供账号删除功能。
- Tips:openssh 8.8 默认禁用 ssh-rsa 加密算法导致 git 验证失效。
- 面试模块:如何治理 OOM。
- 优秀博客:一些优秀开发者的年终总结。
- 学习资料:程序员考公指南;Vim 从入门到精通(中文)。
- 开发工具:摸鱼单词,专注于利用碎片时间学习记忆英语单词。
本期话题
2022年1月31号之后提交的应用需提供账号删除功能
内容如题,该项要求是 2021 年 10 月 6 号提出的,主要目的是加强苹果生态的隐私保护。在 App Store 审核指南的 5.1.1 条款第 v 条更新了这句话:
If your app supports account creation, you must also offer account deletion within the app.
但对于如何设置该功能,苹果并没有明确的要求。如果删除用户账号,应用端可以根据相关法律继续保留用户信息,但这需要在隐私政策中进行说明所采集用户数据的内容和保留策略。
Account deletion within apps required starting January 31
开发 Tips
整理编辑:Hello World
openssh 8.8 默认禁用 ssh-rsa 加密算法导致 git 验证失效
问题源自于最近无意间在工作机上升级了 openssh 版本(后续才发现是版本问题),导致所有基于 ssh 方式的 git 操作全部失效;
git pull
一直提示请输入密码,在我输入了无数次个人 gitlab 密码仍然失败后,第一直觉是我的 ssh 密钥对出了问题,重新生成并上传了新的公钥,还是同样的提示;
使用 ssh -vT
命令查看了详细的日志信息,最终发现了问题所在。在解析日志之前,这里先了解一下简化的 ssh 密钥登录的原理。
SSH 登录原理
我们都知道 ssh 是基于非对称加密的一种通信加密协议,常用于做登录校验,
一般支持两种方式:口令登录和公钥登录;由于篇幅问题这里只介绍公钥的简化流程,该登录流程分为两部分:
生成会话密钥
- 客户端和服务端互相发送 ssh 协议版本以及 openssh 版本,并约定协议版本
- 客户端和服务端互相发送支持的加密算法并约定使用的算法类型
- 服务端生成非对称密钥,并将公钥以及公钥指纹发送到客户端
- 客户端和服务端分别使用 DH 算法计算出会话密钥,后续所有流程都会使用会话密钥加密传输
验证阶段
- 如果是公钥登录,则会将客户端将公钥指纹信息,使用上述的会话密钥加密发送到服务端
- 服务端拿到后解密,并去 authorized_keys 中匹配对应的公钥,生成一个随机数,使用该客户端公钥加密后发送到客户端
- 客户端使用自己的私钥解密,获取到随机数,使用会话密钥对随机数加密,并做 MD5 生成摘要发送给服务端
- 服务端对原始随机数也使用会话密钥加密后计算 MD5,对比两个值是否相等决定是否登录
常说的 ssh 只是一种抽象的协议标准的,实际开发中我们使用的是开源 openssh 库,该库是对 ssh 这一抽象协议标准的实现
以上是 ssh 协议登录校验的流程概要,我们了解到在验证阶段会用到客户端的