Ads by Google
新しい記事を書く事で広告が消せます。
昔のフォルダをあさっていると、およそ2年前(06/08/27)に書いたセキュリティに関してのメモが見つかりました。もともと後輩の教育用に作っておいたメモなのですが、残念ながら諸事情により使われなかったものです。
今でも使えると思いますから公開したいと思います。
第一回はクロスサイトスクリプティングです。
悲しいかなWEB上にいる人たちの中にはクラッキングを試みる人も存在します。そういった人たちから大事なサービスを守るため、ふだんからセキュリティを意識した開発を行うことが重要です。
クラッカーがWEBアプリケーションに対して攻撃を掛けてくる方法は大きく分けて2つあります。サーバーを直接クラックするタイプと、WEBアプリケーションの脆弱性をつくタイプです。
今回はWEBアプリケーションの脆弱性をつくタイプに話題を絞り、その手法と対応策について述べてみたいと思います。
外部から入力されたデータをHTML化して表示するページに起こされうる行為です。表示ページに悪意のあるタグを埋め込むことで閲覧者を攻撃します。たとえば犯罪用の特定ページに強制移動させてウイルスやトロイの混入を図ったりクッキーのパスやカード番号を剽窃したりします。JAVASCRIPTを使うことが多いようです。
簡単な例として、タグが全てOKの掲示板を自作し、
<script type="text/javascript">
<!--
location.href = "/index.html";
-->
</script>
と入力してみると動作の一端をつかめると思います。いうまでもありませんが、そういう掲示板をみつけても他所で試してはいけません。
たったこれだけで掲示板を閲覧しようとした人は悪意のあるものが思ったとおりのページに強制的に飛ばされてしまいます。この例ですとトップに行くだけですみますが、本番のものはウイルス混入用のページに飛ばしたりするようです。
これの対処は、ユーザーから入力されたデータにすべて表示直前にサニタイズをかけることです。phpならhtmlspecialchars()が使えます。もしもSmartyを使っているなら、escape修正子を使うと良いでしょう。
もっともこの対処法ですとすべてのタグが無効化されますから、一部タグを許可したい場合はどうすればいいのかという問題が残ります。
そういう場合は、MTのように「これだけは許す」みたいな形で作ると良いでしょう。[b]文字列[/b]と入力されたテキストを<b>文字列<b/>に置換する処理になります。正規表現と組み合わせればそれほどの負荷をかけずに実現することができます。
tag : クロスサイトスクリプティング php セキュリティ XSS
みんなの動画サーチ 現在の人気動画