なぜPHPアプリにセキュリティホールが多いのか?

【スクリプトインジェクション対策13】不正な文字データを保存できないようにする

この記事を読むのに必要な時間:およそ 0.5 分

データベースサーバの場合,文字列型のコラムに不正な文字エンコーディングの文字列が保存できないように設定できるものも少なくありません。この場合データベースサーバ等は正しい文字エンコーディングのデータのみを保存できますが,ファイル等ではそれを保証することができません。正しい文字データを保存しないとシステム上のどこで問題が発生するか分からなくなります。

例えば,libxml2は壊れたUTF-8エンコーディングを利用するとDoS攻撃に脆弱になる問題が最近修正されました。

http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-6284
The xmlCurrentChar function in libxml2 before 2.6.31 allows context-dependent attackers to cause a denial of service (infinite loop) via XML containing invalid UTF-8 sequences.

ブラウザは文字エンコーディングを利用した攻撃に非常に脆弱です。特にWebシステムでは文字エンコーディングを厳格に取り扱うよう注意しなければなりません。

対策のまとめ

  • 入力時に文字エンコーディングが妥当か確認する
  • 文字エンコーディングは可能な限り厳格に取り扱う
  • データベースサーバ設定など不正な文字エンコーディングが保存できないようにする

著者プロフィール

大垣靖男(おおがきやすお)

University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。
オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモジュールのメンテナンスを担当している。

URLhttp://blog.ohgaki.net/

著書

コメント

コメントの記入