2023 年 6 月 30 日,星期五

本周发现一个 CVE 漏洞,并发布了两个新的 Rails 版本,以及 config.autoload_lib 功能等!

由 vipulnsward 发布

大家周五好!我是 Vipul,为您带来 Rails 代码库的最新变更。

[CVE-2023-28362] redirect_to 中用户提供的值可能存在 XSS 漏洞
如果您还没有更新,是时候将您的 Rails 应用程序升级到最新版本了!Rails 版本 7.0.5.16.1.7.4 已发布,其中包含一个安全修复,用于解决在使用用户提供的值时,redirect_to 中可能存在的 XSS 漏洞。此修复解决了 Rails 中 redirect_to 方法允许提供的字符串包含 HTTP 标头值中非法字符的问题。此漏洞已被分配 CVE 标识符 CVE-2023-28362

Rails 7.0.6 已发布!
Rails 7.0.6 也已发布。此版本包含自 7.0.4 发布以来,过去几个月中的许多向后移植的错误修复。

引入 config.autoload_lib
新方法 config.autoload_lib(ignore:) 提供了一种简单的方式来自动加载 lib 文件夹的内容。

 # config/application.rb
 config.autoload_lib(ignore: %w(assets tasks))

通常,lib 目录包含不应被自动加载或预加载的子目录。此新方法允许您指定需要按需自动加载的子目录。

自动加载指南 中阅读有关此新功能的更多信息。

引入 config.autoload_lib_once

方法 config.autoload_lib_once(ignore:) 与上面介绍的 config.autoload_lib 类似,不同之处在于它将 lib 添加到 config.autoload_once_paths 中。

通过调用 config.autoload_lib_oncelib 中的类和模块可以被自动加载,即使是在应用程序初始化器中,但它们不会被重新加载。

现在可以使用 deliver_now 发送退信邮件
此更改向 ActionMailbox 添加了 bounce_now_with。当您希望立即发送退信邮件而不是通过邮件队列发送时,此功能非常有用。

 # Enqueues the bounce email
MyMailbox.bounce_with MyMailer.my_method(args)

# Delivers the email immediately
MyMailbox.bounce_now_with MyMailer.my_method(args)

railties:install:migrations 的 DATABASE 选项
此更改向 railties:install:migrations 任务添加了一个新的 DATABASE 选项。

这允许我们在引擎中运行 rails railties:install:migrations 时,指定迁移文件应该被复制到哪个数据库。

$ rails railties:install:migrations DATABASE=animals

Active Record 加密支持,用于解密先前以非确定性方式加密的数据
此更改增加了对使用 SHA1 哈希摘要以非确定性方式加密的数据的解密支持。

它为 Active Record 加密添加了一个新的选项,用于支持解密使用 SHA1 哈希摘要以非确定性方式加密的数据。

Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = true

它解决了从 7.0 升级到 7.1 时,使用 SHA-1 作为其摘要类而不是全局摘要类的问题。

为 ActiveSupport::Deprecation 添加 :report 行为
此更改为 ActiveSupport::Deprecation 添加了一个 :report 行为。

config.active_support.deprecation = :report 设置为使用错误报告器向 ActiveSupport::ErrorReporter 报告弃用警告。

这有助于在生产环境中报告遇到的弃用警告,而不是让它们被静默记录。

您可以在 这里查看完整的更改列表。
上周,我们有 25 位贡献者 为 Rails 代码库做出了贡献!

再次祝大家周五快乐!下次见 :-)

订阅以通过邮件获取这些更新。