同記事では、大崎氏が作問・出題した、実際に HackerOne に報告された脆弱性を元ネタとしたクイズについて解説している。
Ruby on Rails をバージョンアップした際に、Hash を JSON に変換する挙動が変わったことが原因でユーザー情報が漏えいしており、さらに「なぜユニットテストで検知できなかったのか」についてもレポートが公開されている。大崎氏は、同レポートを題材にクイズを作問している。
出題されたのは「次のコードを、Rails 7で実行すると、/users/:id のレスポンスはどのようなJSONになるでしょうか? (Ruby 3.3.1)」という問題で、下記4つの選択肢からの選択となる。
1.{"user":{"id":1,"name":"Takumi","secret":"SECRET"}}
2.{"user":{"id":1,"name":"Takumi"}}
3.{"user":{"id":1,"name":"Takumi","secret":"SECRET"}, "user":{"id":1,"name":"Takumi"}}
4.エラーになる
解説によると、Ruby on Rails 6.1 までは Hash を JSON に変換する際、シンボルキーは文字列キーと同一視されており、同じ名前のキーが複数存在する場合は後から追加されたキーで上書きされていたため、この場合の正解は 2.となるが、Ruby on Rails 7.1 では、シンボルキーと文字列キーを別のキーとして扱う仕様に変更されたため、両方のキーがそのまま JSON に出力されるようになったため、正解は 3. になるとのこと。











![[USBで録画や再生可能]Tinguポータブルテレビ テレビ小型 14.1インチ 高齢者向け 病院使用可能 大画面 大音量 簡単操作 車中泊 車載用バッグ付き 良い画質 HDMI端子搭載 録画機能 YouTube視聴可能 モバイルバッテリーに対応 AC電源・車載電源に対応 スタンド/吊り下げ/車載の3種類設置 リモコン付き 遠距離操作可能 タイムシフト機能付き 底部ボタン 軽量 (14.1インチ)](https://m.media-amazon.com/images/I/51-Yonm5vZL._SL500_.jpg)