🚀
[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-utilgem に依存する-
cgi-utilにcgi/escapeを内包する想定かな
-
-
cgi/escapeを他のクラスやモジュールに移行し CGI ライブラリとcgi/escape自体を削除する -
2.+ Ruby 3.5 では移行用にcgi-utilgem を提供するが非推奨警告を出力する。来年cgi-utilgem を削除する
- 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