Azure DevOps Personal Access Token被吊销?

背景

大早上收到一封邮件

内容如下:

大致内容是Azure DevOps Personal Access Token(简称PAT)被吊销了,原因是PAT内容出现在了Github的公开仓库中。

PAT是个啥?

问题

发生了什么?

我想想,昨天是不是发布了一篇文章,文章的内容是介绍 "躺平" 插件的开发和发布过程。

没错,就是它 ------ VSCode插件 - "躺平" 开发和发布

由于不想在文章里po过多的代码,所以我好像公开了 "躺平" 插件的源码库,源码库就在Github上。

而且,我为了发布插件的时候不用输入复杂的发布命令和PAT,把发布命令和PAT放在了package.json里面。

json 复制代码
// package.json
{
  ...
  "scripts": {
    ...
    // 终端执行yarn vp即可完成上传插件的操作,后面那一串就是PAT
    "vp": "vsce publish -p 6ez3pluc3g3ugp7tltxmmyfeocj3iry2rqf6c4g3i7pk476cjnja"
  }
  ...
}

再仔细看看邮件

发现里面提到了:The revoked PAT is found in the following GitHub public repository.
github.com/EvenZhu/lyi...

果然,就是在这个文件里暴露PAT导致了风险,而Azure DevOps Security发现了这个暴露风险,所以把PAT撤销了。

撤销的理由其实很充分,作为公开访问的库,意味着所有人都可以看到这个代码库里面的任何内容,当然也包含这个PAT,而我们只要有这个P只要就可以完成插件的上传、发布、更新动作。如果有人拿着这个PAT直接把有害或者违规的代码发布了,确实很危险。

感谢微软

我承认我是没有这个安全意识的,现在也认识到了这一点,以后一定要引以为戒。

分析

等等,他们是怎么实现的呢?

VSCode是微软的产品,Github被微软收购了,也是微软的产品,So,数据互通了。

我比较好奇的是,他们难道是对每一次用户上传到公开代码库或者把私有库转为公开库的源码进行了检测。而检测规则里面有一条是否包含PAT,如果包含就吊销?那这样的话每一次查询都需要全量获取Azure DevOps 平台所有的PAT进行匹配?应该不是这么简单,这个机制比较简单,但是过程肯定进行了深度的优化,有时间去研究一下。

解决方案

把放在package.json中的,包含PAT内容的发布VSCode插件的命令删除掉。重新获取PAT,将发布命令和新的PAT放在本地的.zshrc中,用配置命令别名的方式去实现快捷命令即可。

这样既不会发布到互联网上,产生暴露风险。也能实现,一个简单指令就可以轻松发布和更新VSCode插件的效果。

总结

  • 作为程序员,要有足够的安全意识
  • 强大的技术能力能够支撑起一个好产品
  • 有效地利用和整合资源,才能做出好产品
  • 一家做产品的公司,具备服务用户的意识很重要
  • 学无止境,身体和灵魂要有一个在路上,这样才可以每天提升一点点

PS:如果有需要补充的内容,请在评论区留言

转载时请注明"来自掘金 - EvenZhu"
相关推荐
敢敢J的憨憨L7 小时前
GPTL(General Purpose Timing Library)使用教程
java·服务器·前端·c++·轻量级计时工具库
喝拿铁写前端7 小时前
Vue 组件通信的两种世界观:`.sync` 与普通 `props` 到底有什么不同?
前端·vue.js·前端框架
美酒没故事°8 小时前
npm源管理器:nrm
前端·npm·npm源
用户22152044278008 小时前
vue3组件间的通讯方式
前端·vue.js
三十_A8 小时前
【实录】使用 patch-package 修复第三方 npm 包中的 Bug
前端·npm·bug
下位子8 小时前
『AI 编程』用 Claude Code 从零到一开发全栈减脂追踪应用
前端·ai编程·claude
tyro曹仓舒8 小时前
Vue单文件组件到底需不需要写name
前端·vue.js
用户47949283569158 小时前
面试官:讲讲2FA 双因素认证原理
前端·后端·安全
乐影8 小时前
TS 模板字符串类型:从基础到进阶的类型编程魔法
前端·typescript
龙在天8 小时前
CSS 属性值的计算与过程
前端