2010.09.28
tel

X×X×X

つい先日、大変大きな事件が起こりました。

ツイッターに深刻なセキュリティ脆弱性が発覚
Twitter、XSS攻撃を説明–「onMouseOver」の脆弱性が悪用
などなど既にいろんなサイトでニュースになっていますが、Twitter上がXSS攻撃を受け、それによりユーザーの意図しない動作が頻発、まさにその時間のTwitterは阿鼻叫喚の地獄絵図と化していました。

さて、今回はその「XSS」という言葉について、いろいろとお話をしていきましょう。

まずは「XSS」という言葉、当然略語なわけですが、正しくは「Cross Site Scripting(クロスサイトスクリプティング)」と言われるものです。

おいおい待ってくれよ、「Cross Site Scripting」なら「CSS」じゃないのかい?

なるほど確かにその通り、正しく頭文字を取ればそうなるのですが、一般的にWebサイトに関する言葉で「CSS」といえば「Cascading Style Sheets(カスケーディングスタイルシート)」、つまり見た目を変えるために使われる技術を指す言葉で、それと混同しない様に「Cross」が「X」になっているのです。カッコいいですね。

カラフル!
では、その「XSS」がなんなのかといえば、

クロスサイトスクリプティング (Cross Site Scripting) とは、動的にWebページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、狭義にはサイト間を横断して悪意のあるスクリプトを混入させること。また、それを許す脆弱性のこと。

ークロスサイトスクリプティング(wikipediaより)

えと、つまり、どういうこと?

1.まずは、悪い人がいます。
悪いクライアントです。いかにも悪そうですね
2.そして、悪い人が悪いデータを登録します。
悪いデータが送信されました
3.他の人がそのデータを見たときに、そのデータが表示され、そして良くないことが起こるのです!
個人情報が盗まれるなんてことも?!
以上、簡単3STEPで概要を紹介してみましたが、これを避けるためには良くないデータを「そのまま」表示するのではなく、なんらかの無害化を行う必要があります。例えば、入力された値を、入力された値「そのまま」表示することです。

まるで同じことを言っていますが、この場合の「そのまま」はまた若干意味が違います。先程の「見た目を変える」ことを例にとれば、

<span style="font-size:150%;color:red;">「見た目を変える」</span>

とされていれば、文字の色が変わりません。悪いコードも、このように「画面上でテキストに見えるように」することで、動作することを防ぐことが出来ます。

ちなみに、今回のTwitterでの脆弱性は現在では修正されていますが、このような脆弱性は全てのWebアプリケーションに起こり得る話です。Webアプリケーションを作るものとして、明日は我が身。気を引き締めて、これからもお仕事を続けていきたいと思います。(tel)
一覧に戻る