Web アプリケーションにおけるセキュリティの考え方について書いてみます。
以下を Web アプリケーションに見立てます。
基本的に、Web アプリケーションには入力と出力があります。
クライアントからのリクエストと、それに対するレスポンスですね。
入力データは基本的に予測できません。なので Web アプリケーション側では、それが受け取るべきデータなのかをフィルタ処理で必ずチェックする必要があります。
出力データがブラウザによって正しく解釈されるようにするために、出力データに対して Web アプリケーション側で適切にエスケープ処理を行う必要があります。
多くの Web アプリケーションは、データベースを使っていることが多いと思います。
データを格納する時やデータを取り出すときには、データベースに対して SQL を送りますが、この SQL は Web アプリケーションからの出力と見なします。
SQL をデータベースが正しく解釈できるようにするために、SQL に対して Web アプリケーション側で適切にエスケープ処理を行う必要があります。
つまり、データベースを使った Web アプリケーションの場合、以下に示す三カ所でフィルタ処理およびエスケープ処理を適切に行う必要があるということです。
ちなみに、RSS 等の外部リソースを読み込んで表示するといったケースでは、それらのデータを Web アプリケーションに対する入力とみなします。
なので、フィルタ処理と出力先に応じたエスケープ処理をそれぞれ適切に行う必要があります。
面倒くさいですね。
…
なにか間違い等ありましたらご指摘いただけるとありがたいです。












