2023.06.26前端周刊

132 阅读2分钟

本专栏(FE weekly news)文章争取每周一更,但由于精力有限,每篇周报的内容可能不多,欢迎大家关注

1. Svelte 4发布了

时隔4年,Svelte终于发布了4.0版本。主要做了以下变动:

  1. 性能方面:服务端渲染时的注水代码量变的更少了、Svelte包的代码量也更小了(从原来的10.6MB变为2.8MB)、依赖的包更少了(从61个变为16个)
  2. 开发体验方面:改变了用户使用自定义元素的方式、改进了一些IDE体验(比如cmd+click将会跳转至对象的实现,而非.d.ts文件)
  3. 更新了官网、文档以及使用指南。

还有一处变动本人能力有限没看懂,把原文放到这里

Svelte 4 makes the Svelte authoring experience more intuitive and consistent: |local is now the default for transitions to avoid animations blocking page transitions, preprocessors are now easier to write, and multiple fixes make CSP easier to set up and use.

2. npm生态的massive bug

一位曾经任职于npm CLI团队的开发者发文,指出npm生态中的npm包目前其实存在着很大的安全漏洞,别有用心的bad coder能够借助这些漏洞使用户在不知道的情况下执行某些指令(比如在本地生成并写入一些文件),又或者引入某些Dependency中没有列出来的npm包。

与此同时他指出,该隐患在很多第三方包管理器中同样存在,比如:

  • Snyk
  • CNPMJS/Chinese Mirror
  • Cloudflare Mirror
  • Skypack
  • UNPKG
  • JSPM
  • Yarn

文章点名表扬了Socket Security,指出他们在这方面做的很不错。

关于如何发布一个bad package,文章也给出了一个案例,我就不在这里细说了,感兴趣可以去原文看看。

我跟着案例试了下,简单来说,npm中列出来的Dependency,是和我们上传的代码各自独立的。也就是说这个Dependency列表我可以随便写,npm并不会进行验证。

image.png

不过用户也并非完全无感的安装未在Dependencies中列出的包,因为npm的安装机制是只会自动下载Dependencies中的包,如果bad package用到了其他未列出的包,而用户又没有手动安装这些包的话,bad package也是没法正常使用这些未安装包的。

但是别忘了,我在前面说过,bad package同样可以让用户在不知情的情况下执行某些指令,所以,说不定他们会让你执行npm install xxx,从而另辟蹊径让你在不知情的情况下安装他们想要偷偷安装的包。

总而言之,大家使用第三方包的时候要提高警惕。