A Django site.
2月 6, 2008
» Web アプリケーションにおけるセキュリティの考え方

Web アプリケーションにおけるセキュリティの考え方について書いてみます。

以下を Web アプリケーションに見立てます。

security1.jpg

基本的に、Web アプリケーションには入力と出力があります。
クライアントからのリクエストと、それに対するレスポンスですね。

security2.jpg

入力データは基本的に予測できません。なので Web アプリケーション側では、それが受け取るべきデータなのかをフィルタ処理で必ずチェックする必要があります。
出力データがブラウザによって正しく解釈されるようにするために、出力データに対して Web アプリケーション側で適切にエスケープ処理を行う必要があります。

security3.jpg

多くの Web アプリケーションは、データベースを使っていることが多いと思います。
データを格納する時やデータを取り出すときには、データベースに対して SQL を送りますが、この SQL は Web アプリケーションからの出力と見なします。

security4.jpg

SQL をデータベースが正しく解釈できるようにするために、SQL に対して Web アプリケーション側で適切にエスケープ処理を行う必要があります。

security5.jpg

つまり、データベースを使った Web アプリケーションの場合、以下に示す三カ所でフィルタ処理およびエスケープ処理を適切に行う必要があるということです。

security6.jpg

ちなみに、RSS 等の外部リソースを読み込んで表示するといったケースでは、それらのデータを Web アプリケーションに対する入力とみなします。
なので、フィルタ処理と出力先に応じたエスケープ処理をそれぞれ適切に行う必要があります。

面倒くさいですね。

なにか間違い等ありましたらご指摘いただけるとありがたいです。

2月 4, 2008
» XSS をわかりやすく絵で説明してみる

XSS(クロスサイトスクリプティング)をわかりやすく絵で説明してみます。

XSS を絵にすると、だいたい以下のようなイメージになります。

xss1.jpg

まず、攻撃者が「クロスサイトスクリプティング クロスサイトスクリプティング…」と 100 回くらい噛まずに唱えます。
すると、マイナスイオンが大量に発生し、それが空気中を伝播し犠牲者となるユーザのPCに送られます。
そして、ユーザ宅のクッキーを奪っていきます。

xss2.jpg

実に簡単な仕組みですね。
たったこれだけのことでクッキーが奪われてしまうのです。
この脆弱性に対する防護方法ですが、「エイチティーエムエルエンティティーズ(htmlentities)エイチティーエムエルエンティティーズ…」と 100 回くらい噛まずに唱えることで回避できると言われています。

ほんとどうでもいい記事ですみません。