PHP 初心者向けのデータベース セキュリティ

1.SQLインジェクションを防ぐ

いわゆるSQLインジェクションとは、Webフォームの送信にSQLコマンドを挿入したり、ドメイン名やページリクエストのクエリ文字列を入力したりすることで、最終的にはサーバーをだまして悪意のあるSQLコマンドを実行させます。

ユーザー入力を決して信頼すべきではありません。ユーザーが入力したデータは安全ではないと想定する必要があります。

たとえば、登録するとき、ユーザーはユーザーを入力する必要があります。名前、パスワードなど

このデータを受け取ったら、最初にフロントエンドページを使用して判断します。すべてが合法になった後、私たちが受け取る情報は、たとえば、ユーザー名が登録されている場合、データベースにクエリを実行し、フォームに送信されたユーザー名情報に基づいて判断する必要があります。は許可されていません。正規表現を使用してその形式を制御することもできます。たとえば、中国語または英語のみで、数語以内にすることができます。お待ちください

フォームによって送信されたデータをフィルターすることもできます

SQL インジェクションを防ぐには、次の点に注意する必要があります:

· 1. ユーザー入力を決して信頼しないでください。ユーザーの入力を検証するには、正規表現を使用するか、一重引用符や二重 "-" などを変換して長さを制限できます。

· 2. SQL の動的アセンブリは決して使用しないでください。データのクエリとアクセスには、パラメーター化された SQL を使用するか、ストアド プロシージャを直接使用できます。

· 3. 管理者権限を持つデータベース接続は決して使用せず、アプリケーションごとに権限が制限された別のデータベース接続を使用します。

· 4. 機密情報を直接保存せず、パスワードや機密情報を暗号化またはハッシュ化します。

· 5. アプリケーションの例外情報は、できるだけ少ないプロンプトを表示する必要があります。カスタマイズされたエラー情報を使用して、元のエラー メッセージをパッケージ化するのが最善です。

· 6. SQL インジェクションの検出方法は、通常、補助ソフトウェアまたは Web サイトを採用します。プラットフォームの検出には、通常、ソフトウェアは SQL インジェクション検出ツール jsky を使用し、Web サイト プラットフォームには Yis Web サイト セキュリティ プラットフォーム検出ツールが含まれます。 MDCソフトスキャンなどMDCSOFT-IPS を使用すると、SQL インジェクション、XSS 攻撃などを効果的に防御できます。

SQL インジェクションを防ぐ

Perl や PHP などのスクリプト言語では、ユーザーが入力したデータをエスケープして SQL インジェクションを防ぐことができます。

PHP の MySQL 拡張機能は、特殊な入力文字をエスケープするための mysql_real_escape_string() 関数を提供します

<?php
    if (get_magic_quotes_gpc()) {
          $name = stripslashes($name);
    }
    $name = mysql_real_escape_string($name);
    mysql_query("SELECT * FROM users WHERE name='{$name}'");
?>

Like ステートメントへのインジェクション

Like クエリ、ユーザーが入力した値に "_" と "%" が含まれている場合、この状況はユーザーは当初「abcd_」のみをクエリしたいと考えていましたが、クエリ結果には「abcd_」、「abcde」、「abcdf」などが含まれていました。ユーザーは「30%」をクエリしたいと考えていました(注: 30%)。も発生する可能性があります。

次の例に示すように、PHP スクリプトでは addcslashes() 関数を使用して上記の状況を処理できます。

学び続ける
||
<?php echo "hello world"; ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜