Webデザイナが知っておくべきPHPセキュリティ
たにぐちまこと(H2O Space.)
2008/04/10 08:00
だいたいわかったPHP。だけどもう一つ大切なことがある。それがセキュリティだ。
クロスサイトスクリプティング
例えば、次のようなスクリプトを作ってみよう(インターネット上には公開せず、XAMPPやMAMPなどを用いて、コンピュータ内だけで試してください(連載第1回参照))。
index.php <p>あなたのお名前をご記入ください</p> <form id="form1" name="form1" method="post" action="main.php"> <input name="my_name" type="text" id="my_name" size="35" maxlength="256" /> <input type="submit" name="btnSubmit" id="btnSubmit" value="送信する" /> </form> main.php こんにちは。<?php echo $_REQUEST['my_name']; ?>さん
index.phpをWebブラウザに表示して、名前を記入すると次の画面に名前が表示されるというスクリプトだ(画像1)。
大したことのないスクリプトに見えるが、非常に危険なセキュリティホールを含んでいる。名前の欄に、次のように記入してみよう。
<script>alert(123);</script>
すると、次の画面のように名前が記入される代わりに、警告ウィンドウが表示される(画像2)。
これは、本来名前を記入するべき欄に、悪意のあるユーザーがJavaScriptを記入することでWebブラウザを暴走させたものだ。上記のスクリプト内容では警告ウィンドウが表示されるだけの内容なので被害はないが、スクリプトの内容によってはWebサーバーに被害を与えたり、他の閲覧者の情報を盗むようなスクリプトを書き込まれる可能性もあり、非常に危険な状態といえる。
これを「クロスサイトスクリプティング」などという。今回の場合、「<script>」というタグを書き込まれることがないよう、次のようにすれば防ぐことが可能だ。
main.php こんにちは。<?php echo htmlspecialchars($_REQUEST['my_name'], ENT_QUOTES); ?>さん
このように、スクリプトを記述する時には必ず必要な記述などもある。特にユーザーからの入力を受け付ける時には、細心の注意が必要なため、必ずエンジニアに相談してから作ると良いだろう。
- コメント(8件)
#1 大野晋一
- 2008/04/10 14:18:17
htmlspecialchars()関数の第2引数について
builder編集部の大野です... 続きを見る
» 不適切なコメントを報告する
#2 h2ospace
- 2008/04/10 18:56:57
筆者です。「htmlspecialchars」の件、うっかりしていて大変失礼いたし... 続きを見る
» 不適切なコメントを報告する
#3 がる
- 2008/04/19 01:46:29
本文中に出ている
mysql_query("SELECT * FROM login_table WHERE id="... 続きを見る
» 不適切なコメントを報告する
- 特集: WebデザイナのためのPHP入門 (4件)
- 2日前のトップ記事
- 4日前
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 読者投票
今、使っているマシンのOSは?
- 話題のタグ
リファレンス
Microsoft
server
仮想化
Tips
Webデザイン
Java
Windows
HTML
JavaScript
Firefox
Flash
iPhone 3G
iPod touch
Mac OS X
イロハ
Apache
開発環境
Internet Explorer
Ruby
SOA
Adobe
ブラウザ
Off Topic
MySQL
Safari
Ajax
C/C++
Webアプリケーション開発
Mozilla
Firefox 3
オープンソース
小技
ライブラリ
Linux
Solaris
Apple
XHTML
PHP
入門
Database
iPhone
Eclipse
RIA
Google
CSS
Leopard
Opera
フレームワーク
Python
話題のタグを見る »


#8
フォトレポート:世界各国の優秀な技術者がパリに集結--Imagine Cup 2008世界大会
バッチ処理でデータベース活用:4つの課題と5つの解決ポイント
Rubyでどう書く?:RubyでWord文書を作成する
Adobe Acrobat 9--音声やクイズを埋め込んでeラーニング
ウェブ制作者が仲間と幸せに仕事をする方法:仲間との出会い
Excelで多用する雑多な操作を素早く片付けるための10のティップス(前編)
開発者のFirefox 3:非互換のアドオンをインストール
今知るべき仮想化情報
「未来の、その先」をどう提言していくか
Techno Exchange
ZDNet Japan Green IT
DELL連載第4回〜「Microsoft System Center」