オプションモジュールのmbstring
今の所,
mbstringモジュールがデフォルトモジュールでないので,
セキュリティ面以外でも,
mbstringはデフォルトモジュールであったほうがWebシステム開発には都合がよいのですが,
auto_ prepend_ fileの利用
PHPには幸い便利なauto_
設定例:auto_
auto_prepend_file=/path/to/validator-script.php
PHPの場合,
$_FILESのファイルデータを除けば送信されてくる文字エンコーディングは概ね予想ができます。HTMLフォームは特に指定がなければ,
問題となるのは直接URLにマルチバイト文字を入力してリクエストを送信してくるユーザです。この場合,
前者の方法では文字エンコーディングの自動検出に成功すれば正しく処理でき,
ファイルアップロードと文字エンコーディングの自動変換
mbstringモジュールは入力文字エンコーディングを内部文字エンコーディングに自動変換する機能を持っています。この機能はファイルアップロードを行った場合は動作しないので注意が必要です。ファイルアップロードで送信されるファイルデータはバイナリであることが多いのでこのような仕様になっています。
まとめ
オープンソースのWebアプリケーションのほぼすべてがセキュリティ対策に必須といえる文字エンコーディングのバリデーション処理を行っていません。しかし,
今回は文字エンコーディングのバリデーションについて解説しましたが,