Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

外部依赖的安全隐患

  项目做着做着总会用到外部依赖,有时候需要什么功能而自己懒得写就直接找开源代码来用。有了 npm 和 bower 之类的东西后,加载外部依赖变得更容易。项目中直接依赖外部程序虽然可以降低开发成本,但随之而来的一系列问题也是需要解决的。
  我刚开始用 bower 的时候就意识到了一个问题,由于依赖的升级,造成程序不兼容怎么办?虽然有 SemVer 这套标准可用,但并不是所有库的作者都会遵循。所以依赖升级造成程序不兼容的情况是潜在的,除非写死版本号,关闭自动升级。
  即使关闭自动升级也未必安全,因为这些外部依赖的包本身就不稳定。作者可以直接在某个版本上修改代码而不升级版本,甚至作者可以删除某个版本或某个项目。所以要确保外部依赖的稳定是很难的,最稳定环保的办法是 fork 仓库后再引入,这样即使主仓库被删除也不会导致程序挂掉。
  当然,Github 本身也未必稳定。最近 Github 就受到了攻击,导致了很多项目无法部署代码上线。但这种事情出现的概率并不高,而且即使出现也只是临时性的。如果真觉得 Github 管理代码不靠谱也可以自己管理,只是每次引用或更新外部依赖时要手动下载代码。这也是最稳定的方法。
  光解决了稳定的问题还不够,外部依赖的程序安全性也是个坑。特别是一些不知名的库,谁知道里面有没有什么神奇的安全漏洞。这个问题在 npm 上尤其明显。因为 npm 有命令行的执行权限,搞不好就不是代码安全性问题,而是开发机或服务器被黑的问题。前几天在微博上也看到说 npm 包名拼写错误导致的安全问题,我也觉得这确实是个严重安全隐患。
  总之,任何外部依赖都是有风险的,对 star 不上千的项目不读源码我都不敢随便用。大家也尽量小心点,不要给未来埋下坑!
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^