

Node.js v20.18.0增加部分信任链选项与可冻结全域对象功能,提升程序安全性与性能,并添加实验性网络检查工具
Node v20.18.0是最新的长期支持版本,带来实验性与正式多项功能更新。正式功能包括tls.createSecureContext新支持部分信任链新选项,以及vm.createContext()添加可冻结全域对象的选项,提升程序的安全性和性能。而实验性功能则添加了网络检查工具,开发者可以通过打开指定旗标,视图应用程序的网络活动,进一步了解网络通信状况。
Node.js v20.18.0更新提供开发者更多灵活性和安全性,特别是在网络通信和JavaScript运行环境方面。Node.js中用于创建安全连接的重要API tls.createSecureContext,在这次更新中添加了allowPartialTrustChain选项,让开发者可以将信任的CA清单中的中继凭证视为可信任,即便这些凭证并非自签章(Non-Self-Signed)。
这项变更对于处理信任链非常重要的原因在于,就算是无法获得完整的信任链,开发者仍可以通过设置allowPartialTrustChain:true来接受部分信任的中继凭证,让应用程序在不同环境中创建安全连接时更具弹性。
另外,Node.js用来创建隔离运行环境,运行第三方或不信任的代码,以确保不会影响主应用程序全域状态的方法vm.createContext(),在这次更添加加了一个能创建可冻结全域对象的新选项。该选项让开发者可以创建一个没有拦截器的全域对象,并进一步将其冻结。
拦截器是一种用于监控和控制全域对象的操作机制,避免第三方代码对全域对象进行未授权的修改。新的选项取消这层监控直接冻结全域对象,确保全域对象的不可变性以提高安全性,同时加快全域对象的存取速度,适合不需要拦截器行为的应用情境。
在网络检查工具方面,Node.js v20.18.0添加的实验性功能,让开发者可以使用--experimental-network-inspection旗标,监控应用程序中的网络活动。目前该功能仅支持http和https模块,并且还在持续开发中。目前该功能只能在Node.js自身环境使用,Chrome DevTools中的Network标签尚未支持,未来将会随着Chrome DevTools团队的开发而加入。