h1. BigDecimal 段错误修复
Ruby 的 big decimal 库中存在一个段错误缺陷,当用户提供已知的恶意值时可能被触发。如果您想测试应用程序是否安全,请运行 +example.rb+。该脚本应正常退出,不会发生段错误。
该变通方法存在负面副作用。具体来说,它会阻止您使用 BigDecimal 处理大数(超过 255 位数字)或使用科学计数法提供数字(例如,"5E6" 表示 5000000)。如果您需要这些功能,则必须升级到打过补丁的 Ruby。
强烈建议您按照 "Ruby 网站上的说明":http://www.ruby-lang.org/en/news/2009/06/09/dos-vulnerability-in-bigdecimal/ 升级 Ruby。此变通方法仅用于临时使用。
h2. 受影响的 Ruby 版本:
h3. 1.8 系列
h3. 1.9 系列
h2. 安装说明
h3. Gem 安装
该修复可通过 github 上的 gem 获得。要安装它,您应运行以下命令:
$ gem sources -a http://gems.github.com $ sudo gem install NZKoz-bigdecimal-segfault-fix
然后在您的代码中添加:
gem 'NZKoz-bigdecimal-segfault-fix' require 'bigdecimal-segfault-fix'
h3. Rails 初始化器安装
要将此修复应用于 Rails 应用程序,您只需将 +bigdecimal-segfault-fix.rb+ 文件复制到 config/initializers 目录中。