🚀
[Feature #21258] CGI ライブラリを Ruby から廃止するチケット
[Feature #21258] Retire CGI library from Ruby 3.5
- CGI ライブラリを Ruby から廃止するチケット
- 現状はおそらく default gem ぽい?
- 今後は
gem install cgi
をする必要がある
- 背景としては直近で CGI に対する脆弱性対応を行ったがそこにかけるコストがもう必要がない、みたいな感じみたいですね
- https://www.ruby-lang.org/en/news/2025/02/26/security-advisories/
- perl や python もすでに削除されているみたい
- ただし CGI の
cgi/escape
は依然として利用されているので- erb、net-http、bundler は
CGI.escape/CGI.unescape
に依存しているとかがあるみたい
- erb、net-http、bundler は
- なのでこのチケットでは以下のような提案をしています
- Ruby 本体では
cgi/escape
のみ残し、CGI ライブラリ自体は削除しcgi-util
gem に依存する-
cgi-util
にcgi/escape
を内包する想定かな
-
-
cgi/escape
を他のクラスやモジュールに移行し CGI ライブラリとcgi/escape
自体を削除する -
2.
+ Ruby 3.5 では移行用にcgi-util
gem を提供するが非推奨警告を出力する。来年cgi-util
gem を削除する
- Ruby 本体では
- チケットでもいくつかコメントされていたんですが開発者会議で以下が決定したみたいですね
-
CGI.escape* / CGI.unescape*
メソッドがない CGI ライブラリを削除する- これには
escapeURIComponent、unescapeURIComponent、escapeHTML、unescapeHTML、escapeElement、unescapeElement
が含まれる
- これには
-
cgi/util
ではなくてcgi/escape
で読み込むようにする -
cgi/escape
は今後も維持する -
cgi.rb
やcgi/util.rb
を使用すると警告が出る
-
- これはすでに対応されており開発版の Ruby 3.5-dev では
-W
がある場合に以下のような警告が出力されます
$VERBOSE = true
# no warning
require "cgi/escape"
# warning: CGI library is removed from Ruby 3.5. Please use cgi/escape instead for CGI.escape and CGI.unescape features.
# If you need to use the full features of CGI library, Please install cgi gem.
require "cgi"
Discussion