ハッカーは、SQL インジェクション攻撃を通じて Web サイトのデータベースにアクセスし、Web サイトのデータベース内のすべてのデータを取得することができ、SQL インジェクションを通じてデータベース内のデータを改ざんしたり、データベース内のデータを破壊したりする可能性があります。 Web 開発者は、この種のハッカー行為を嫌います。もちろん、SQL インジェクションの原理を理解し、コードを通じて Web サイトのデータベースを保護する方法を学ぶ必要もあります。今日は、PHP および MySQL データベースを例として使用して、SQL インジェクション攻撃について私が知っていること、いくつかの簡単な予防策、および SQL インジェクション攻撃を回避する方法に関するいくつかの提案を共有します。
SQL インジェクションとは何ですか?
SQL インジェクションとは、簡単に言うと、コードの脆弱性を利用して、Web サイトやアプリケーションのバックグラウンドで SQL データベースのデータを取得し、データベースにアクセスすることです。たとえば、ハッカーは Web サイト コードの脆弱性を悪用し、SQL インジェクションを使用して企業 Web サイトのバックエンド データベース内のすべてのデータ情報を取得する可能性があります。データベース管理者のログイン ユーザー名とパスワードを取得した後、ハッカーはデータベースの内容を自由に変更したり、データベースを削除したりすることができます。 SQL インジェクションは、Web サイトやアプリケーションのセキュリティをテストするためにも使用できます。 SQL を挿入する方法は数多くありますが、この記事では最も基本的な原則のみについて説明します。例として PHP と MySQL を使用します。この記事の例は非常に単純です。他の言語を使用する場合は、SQL コマンドに注目するだけで理解できます。
単純な SQL インジェクション攻撃ケース
すべての顧客データとその他の重要な情報を Web サイトのバックエンド データベースに保存する企業 Web サイトがあるとします。 Web サイトのログイン ページのコードにユーザー情報を読み取るコマンドが含まれている場合。
コードをコピー コードは次のとおりです:
<
$q = "SELECT `id` FROM `users` WHERE `username`= ' " .$_GET['username']. " ' AND `password`= ' " .$_GET['password']. " ' ";
?>
コードをコピー コードは次のとおりです:
<
$q = "SELECT `? id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ";
?>
コードをコピーします コードは次のとおりです:
< ;?
//接続
$database = mysql_connect("localhost", "ユーザー名","パスワード");
//db 選択
mysql_select_db("database", $database); 🎜>$q = mysql_query("SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET[ 'password'] ). " ' ", $database);
さらに、PHP コード内の入力値の長さを決定することもできます。入力された値を確認する機能です。したがって、ユーザー入力値が受け入れられる場合は、入力内容をフィルタリングしてチェックする必要があります。もちろん、意図的な防止を実現するために、最新の SQL インジェクション手法を学び理解することも非常に重要です。 WordPress などのプラットフォームベースの Web サイト システムを使用している場合は、必ず公式パッチを適用するか、適時に新しいバージョンにアップグレードしてください。何か間違っている場合や理解できない場合は、コメント欄にメッセージを残してください。