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 h2ospace  - 2008/04/10 18:56:57

筆者です。「htmlspecialchars」の件、うっかりしていて大変失礼いたし... 続きを見る
» 不適切なコメントを報告する

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

本文中に出ている mysql_query("SELECT * FROM login_table WHERE... 続きを見る
» 不適切なコメントを報告する

#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ログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
  • 新着記事
  • 人気記事
  • 特集
  • ブログ