今回はRuby製Webアプリでの入力チェック手順について考えてみる。Ruby1.9を使い、Railsなどのフレームワークは使わない前提だ。 文字エンコーディングの妥当性検証こそが重要 徳丸浩さんの『体系的に学ぶ 安全なWebアプリケーションの作り方』には「入力処理」として下記3つの処理が挙げられている。 (a)文字エンコーディングの妥当性検証 (b)文字エンコーディングの変換(必要な場合のみ) (c)パラメータ文字列の妥当性検証 このうち(c)は単なる書式チェック(文字種や長さなどのチェック)なので、アプリの要件にしたがって粛々と行えばよいだろう。 (b)も必要な場合にだけ行えばよいので、さほど重要ではない。 重要なのは(a)で、これをいかにRubyで実現するかだ。同書では(おそらく意図的に)Rubyへの言及はなかった。 Rubyでは(b)→(a)→(c) RubyのStringには、St