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

【スクリプトインジェクション対策12】データベースなど,内部データを信用しない

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

既に前の項目で解説済みですが,よく見かける問題なので別項目として取り上げています。

たとえ内部システムから取得したデータであっても,そのデータの起源や管理状態が不明確な場合はデータを信用してはなりません。実際にあった例ですが,管理システムが動作ログをメールメッセージで送信し,ログ保存システムがそれを受け取ってデータベースサーバにログを保存し,管理用のWebアプリがそのデータベースから取得したログを表示するシステムがありました。ログメッセージにはHTMLタグが含まれる場合があるため管理用のWebアプリはエスケープなしにログを表示していました。ログメッセージの送信先のメールアドレスとメール形式を知っているユーザであれば,誰でも簡単にスクリプトインジェクションを行い管理者のセッションを盗むことが可能な状態でした。

メールサーバから直接ログを取得していたのであればプログラマも危険性を考慮できたかもしれません。別のシステムを経由するとリスクが明白でなくなることがよくあります。本当に信頼できるデータのみ信用できるデータとして扱わなければなりません。これは簡単なようで思ったほど簡単ではありません。システムを拡張する過程で思わぬ脆弱性を作ってしまうことは少なくありません。

対策のまとめ

  • データソースを確実に信頼できない限りデータを信用しない
  • 内部データであっても安易に信用しない
  • システムを拡張する場合は慎重に行う

著者プロフィール

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

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

URLhttp://blog.ohgaki.net/

著書

コメント

コメントの記入