TOPシステム開発> セキュリティについて
PHP開発入門
PHP開発はじめの一歩

第3回:PHPアプリケーションを公開するには

著者:ウノウ  尾藤 正人   2007/8/21
1   2  3  次のページ
セキュリティについて

   Webアプリケーションを開発・公開する際に、セキュリティは避けることのできない重要な課題です。個人情報漏洩が問題視される昨今では、Webアプリケーションの脆弱性によって会社の信用を大きく失うケースもあるのです。

   セキュリティに関する話題は多岐に渡りますが、ここではもっとも基本的なセキュリティに関する事柄を解説します。

XSS(クロスサイトスクリプティング)

   「XSS(クロスサイトスクリプティング)」とは、第3者が悪意のある任意のスクリプトを混入させることができる脆弱性を指します。 XSS脆弱性の存在するWebページでは、任意のスクリプトを使用することでCookieを盗んでなりすましを行えるのです。

   値を出力する時に必ずHTMLタグをエスケープすれば、XSSを防ぐことができます。外部から入力される文字は何を入力されるかわかりません。このため出力する時に必ずエスケープ処理を行うようにしましょう。

   PHPの場合は以下のように、「htmlspecialchars();」という関数を使用すればHTMLタグをエスケープできます。

<?php echo htmlspecialchars($foo, ENT_QUOTES); ?>

   「htmlspecialchars()」の第1引数に、HTMLタグをエスケープしたい文字列を渡します。第2引数の「ENT_QUOTES」はおまじないのようなものだと考えてください。


SQLインジェクション

   SQLインジェクションは悪意のある第3者が、任意のSQLを発行することができる脆弱性です。データベースを使用しているWebアプリケーションの場合、SQLを発行してデータベースへのアクセスを行います。このSQLを生成する時にきちんとエスケープ処理を行わないと、任意のSQLを発行されてしまい、データが盗まれたり、更新や削除が行えてしまうのです。

   SQLインジェクションを防ぐには、SQLを生成する時に必ずエスケープ処理を施すようにします。XSSと同様に、外部から入力される文字は何を入力されるかわからないため、すべてをエスケープするように設定しましょう。

   使用しているデータベースごとに個別の関数が用意されているので、そちらを使用するようにします。例えばMySQLを使っているなら「mysql_escape_string()」という関数が用意されているのでこれを利用し、以下のように設定します。

<?php
$sql = "SELECT * FROM USERS where id = '".mysql_escape_string($id)."'";
$result = mysql_query($sql);
?>

1   2  3  次のページ


ウノウ株式会社  尾藤 正人
著者プロフィール
ウノウ株式会社  尾藤 正人
CTO
広島市立大学大学院在学中にVine Linux SPARC版の開発を行う。2002年4月、HDEに入社。2003年度未踏ユースプロジェクトに採択され、「みかん - サーバ自動選択型FTPサーバの開発」を行う。退職後、シリコンバレーに語学留学のため渡米。2004年12月、帰国してウノウに参画。写真共有サイト「フォト蔵」を開発中。

ブログ:ベイエリア情報局
http://blog.bz2.jp/


INDEX
第3回:PHPアプリケーションを公開するには
セキュリティについて
  開発を効率よく行うには
  インターネットにサービスを公開する