TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

Think IT Software Developer's Think IT Find-IT 失敗しないソフト選び Find-IT TEDIA テクノロジーポータル TEDIA インストールマニアックス2008 インストールマニアックス2008

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

MySQL&PHPアプリからSQLインジェクションを防ぐ
(2009/03/26公開)

テキストや電子メールの入力の検証

 この方法は、ユーザー名、人物の姓名、電子メールアドレスなどのフォーム入力を検証するために使います。


<?php
//Validate text input
if (! preg_match('/^[-a-z.-@,'s]*$/i',$_POST['name']))
{
}
else
if ($empty==0)
{
}
else
{
}

?>



 この検証スクリプトの優れた点は、空白の入力を受け付けないことです。一部の悪意を持ったユーザーは、空白を入力してデータベースを操作することもあります。上のスクリプトでは、“$name”という1つのテキスト変数のみを検証します。つまり、3つのテキスト変数がある場合は、各変数用に3つの検証スクリプトを作成し、データベースへ送られる前にすべての変数が正当なものであることを保証できます。

より強力な保護の方法

 もっと強力な保護が必要な場合は、上のスクリプトに加えてmysql_real_escape_stringも使用して、ユーザー入力を検証します。これにより、上の検証スクリプトが何らかの理由で失敗した場合も、第2の保護が提供されます。この機能についての説明はこの記事の範囲外です。詳しい説明については、http://www.php.net/mysql_real_escape_stringを参照してください。

 ただし、この機能を使用するには、MySQLデータベース、に接続している必要があります。そうでない場合はエラーが返されます。一部の非常に有能なハッカーは、mysql_real_escape_stringを操作する可能性があります。この理由から、ハッキングを困難にするため、スクリプトに二重のフィルター(検証スクリプト+mysql_real_escape_string)を適用することを強くお勧めします。


前のページ     1    2    3    4    5    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.