您现在的位置是:首页 > 文章详情

Ruby 3.2.0 Preview 1 发布,引入正则表达式超时退出机制

日期:2022-04-05点击:541

Ruby 3.2.0 Preview 1 已发布。此版本增加了许多新特性,以及优化性能。

基于 WASI 的 WebAssembly 支持

这是基于 WASI 的 WebAssembly 支持的初始移植。此项特性使得 CRuby 二进制文件可在 Web 浏览器、Serverless Edge 环境和其他 WebAssembly/WASI 嵌入器上使用。目前,此移植可在不使用 Thread API 的前提下通过基本和引导测试套件的测试。

正则表达式超时退出机制

此版本引入了正则表达式超时退出机制。

 Regexp.timeout = 1.0 /^a*b?a*$/ =~ "a" * 50000 + "x" #=> Regexp::TimeoutError is raised in one second

由于正则表达式匹配会耗费不少时间,当代码试图向不受信任的输入匹配低效的正则表达式时,攻击者可能会利用它进行 DoS 攻击(即正则表达式 DoS,或称作 ReDoS)。

Regexp.timeout根据 Ruby 应用程序的要求进行配置,可以防止或显着降低 DoS 的风险。请注意,Regexp.timeout是全局配置项,如果希望对某些特殊的正则表达式使用不同的超时设置,需要使用timeout关键字Regexp.new

 Regexp.timeout = 1.0 # This regexp has no timeout long_time_re = Regexp.new("^a*b?a*$", timeout: nil) long_time_re =~ "a" * 50000 + "x" # never interrupted

此项特性的最初提案:https://bugs.ruby-lang.org/issues/17837

其他更新内容包括优化性能,更新标准库等,详情查看发布公告

原文链接:https://www.oschina.net/news/189866/ruby-3-2-0-preview1-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章