目次:
定義-SQLインジェクションとはどういう意味ですか?
SQLインジェクションは、悪意のあるコードが設計の不十分なアプリケーションに埋め込まれ、その後バックエンドデータベースに渡されるコンピューター攻撃です。 悪意のあるデータは、データベースクエリの結果または実行されるべきではないアクションを生成します。
TechopediaはSQLインジェクションについて説明します
SQLインジェクション攻撃の例を見てみましょう。
銀行のオペレーションを実行するアプリケーションには、顧客の社会保障番号などのデータポイントを使用して顧客の詳細を検索するために使用できるメニューが含まれています。 バックグラウンドで、アプリケーションは、入力された検索値を次のように渡すことにより、データベースで実行されるSQLクエリを呼び出します。
SELECT client_name、telephone、address、date_of_birth WHERE social_sec_no = 23425
このサンプルスクリプトでは、ユーザーはアプリケーションメニューウィンドウに23425値を入力し、社会保障番号の入力を要求します。 次に、ユーザーが指定した値を使用して、データベースでSQLクエリが実行されます。
SQLの知識があるユーザーは、アプリケーションを理解し、社会保障番号を求められたときに単一の値を入力する代わりに、次のようにデータベースに渡される文字列「23425 or 1 = 1」を入力できます。
SELECT client_name、telephone、address、date_of_birth WHERE social_sec_no = 23425 or 1 = 1
WHERE句は、脆弱性を導入するため重要です。 データベースでは、条件1 = 1は常にtrueです。また、クライアントの社会保障番号の詳細(23425)またはWHERE 1 = 1を返すようにクエリが指定されているため、クエリはテーブル内のすべての行を返します。元の意図。
上記のSQLインジェクション攻撃の例は単純ですが、脆弱性を悪用してアプリケーションをだましてバックエンドデータベースクエリまたはコマンドを実行する方法を示しています。
SQLインジェクション攻撃は、特にデータベースクエリまたはコマンドを実行するためにユーザー入力を必要とするモジュールにおいて、適切なアプリケーション設計を保証することにより軽減できます。 上記の例では、1つの数値のみを受け入れるようにアプリケーションを変更できます。
