Webデザイナが知っておくべきPHPセキュリティ

たにぐちまこと(H2O Space.)
2008/04/10 08:00

だいたいわかったPHP。だけどもう一つ大切なことがある。それがセキュリティだ。

 ここまでの連載で、PHPがデザイナにとっても決して難しいものではなく、むしろ便利に使えるものであることを紹介した。少しでも恐怖感やアレルギー感がなくなっていただけると幸いである。

 ただし、あまり身近に感じすぎてしまうのも逆に危険が伴う。

 スクリプトは、ご存じの通り何でも作ることができてしまうため、Webサーバーに大きな負担をかけたり、場合によっては壊してしまうようなスクリプトさえできあがってしまうことがある。

 また、正しい知識を持って作らなければ「セキュリティホール」が存在することになってしまい、クラッカーと呼ばれる悪意を持ったユーザーによって、個人情報が盗まれたり、Webサイトを改変されたりする可能性もあり得る。

 そこで、今回はそんなセキュリティの知識を紹介していこう。

無限ループ

 次のようなスクリプトを見てみよう(実際に動作させないでください)。

<?php
$count = 1;

while($count <= 10) {
	$coun = $count + 1;

	echo $count;
}
?>

 このスクリプト、一見すると大した内容ではない。「$countという変数が10になるまで1ずつ加算して、画面に表示する」というスクリプトだ。「while」というのは「繰り返す」という意味のスクリプトで、特定の条件が満たされるまでスクリプトを何度も動作させることができる。

 ただし、上記のスクリプト。実は次の部分でスペルミスを犯している。

$coun = $count + 1;

 これにより、正しい処理が行われずに「while」の終了条件であるはずの「10になるまで」という条件が永遠に満たされない状態となる。そのため、このスクリプトは終わらない「無限ループ」という状態に陥ってしまうのだ。

 すると、Webサーバーは意味のないスクリプトを動作させ続け、非常に負担の大きい状況になってしまう。

 このように、スクリプトはたった一文字間違えただけでも、意図しない動作になるばかりか、Webサーバーに負担をかけてしまったり、閲覧者に迷惑をかけることになるので気をつけよう。

  • コメント(8件)

#1 大野晋一  - 2008/04/10 14:18:17

htmlspecialchars()関数の第2引数について builder編集部の大野です。初出時、2ページ目最下のソースコードにおいて、htmlspecialcha... 続きを見る
» 不適切なコメントを報告する

#2 h2ospace  - 2008/04/10 18:56:57

筆者です。「htmlspecialchars」の件、うっかりしていて大変失礼いたしました。 はてなブックマークやトラックバック等でご指摘いただ... 続きを見る
» 不適切なコメントを報告する

#3 がる  - 2008/04/19 01:46:29

本文中に出ている mysql_query("SELECT * FROM login_table WHERE id=".mysql_real_escape_string($_REQUEST['id'])." AND password=".... 続きを見る
» 不適切なコメントを報告する

#4 大野晋一  - 2008/04/21 20:39:44

builder編集部の大野です。 シンタックスエラーの件は大変失礼いたしました。誤って余計な記号が含まれてしまいましたので、修正いた... 続きを見る
» 不適切なコメントを報告する

#5 がる  - 2008/04/22 06:11:44

がるです。 大変に手厳しい発言になり恐縮ではあるのですが。 > また、ご指摘のセキュリティ面の脆弱性についてですが、以下の資料... 続きを見る
» 不適切なコメントを報告する

#6 大野晋一  - 2008/04/22 17:31:55

ご指摘ありがとうございます。このままでは文字列の IDやパスワードを受け付けてくれないですね。修正いたしました。 また、先の投稿... 続きを見る
» 不適切なコメントを報告する

#7 h2ospace  - 2008/04/25 13:33:30

筆者です。 > がるさん ご指摘、および詳しい解説をいただきましてありがとうございました。 完全に私の検証ミスで、セキュリテ... 続きを見る
» 不適切なコメントを報告する

#8 thesecret  - 2008/05/10 17:46:58

PHPはそもそも「HTMLをちょっと変えれば動くようになります」という趣旨の言語ですから、 「今日からはじめて、簡単に作ってみ... 続きを見る
» 不適切なコメントを報告する
記事に関係する情報をコメントでお寄せください

ニックネーム : CNET_IDにログインしてコメントする

コメント本文(必須) :
  • 昨日のトップ記事
  • 2日前
  • 3日前
  • 8日前
  • 9日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ