这是 nextjs 官方开源的修复工具,无需担心! 具体地址: https://github.com/vercel-labs/fix-react2shell-next
使用方面,一条命令就行了 npx fix-react2shell-next --fix
我大概讲下这次漏洞的修复原理,其实就是把 next.js 版本和 React RSC Packages 的版本升级到对应的 Patched 版本就可以。
运行上面的命令之后,我们可以看到在我们项目包管理里,nextjs 版本升级到对应版本了,但是里面 react 还是有漏洞的版本,所以挺多人会有这个疑惑:这个工具是不是不行?是不是还得手动改下 react 的版本?
下面这个 issues 里就有人担心: https://github.com/vercel-labs/fix-react2shell-next/issues/13
实际上 github 里讲清楚了: Recursively scans all package.json files (handles monorepos) Checks for vulnerable versions of:
nextjs 会将 react-server 的服务端的这些包(也就是上面的 react-server 的 3 个包)打包到 nextjs 里,而升级了的 nextjs 里包含的 react-server 是 Patched 的版本,也就是修复了这个 bug 的版本。
至于我们项目的包管理里的 react 是前端的框架,没有这个漏洞。
我们也可以在全局代码里搜索react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack这三个包确认下,在我们自己的代码里应该找不到这三个包。
1
kasusa 2 天前
emm 不就是升级嘛。 升级之后还要重新部署啊。
|
2
yeelooyeeuu OP 嗯,是升级就行,手动的话,得知道升级哪些:
比如,nextjs 升级到对应版本后,其实 react 的版本不用升级(因为不是 react-server )。 官方的这个工具的话,一键修复,更方便省心。 |
3
yeelooyeeuu OP @kasusa
嗯,是升级就行,手动的话,得知道升级哪些: 比如,nextjs 升级到对应版本后,其实 react 的版本不用升级(因为不是 react-server )。 官方的这个工具的话,一键修复,更方便省心。 |