ホームページ > バックエンド開発 > PHPチュートリアル > パラメータ化されたクエリは SQL インジェクションをどのように防ぐことができますか?

パラメータ化されたクエリは SQL インジェクションをどのように防ぐことができますか?

Mary-Kate Olsen
リリース: 2024-12-31 08:44:09
オリジナル
288 人が閲覧しました

How Can Parameterized Queries Prevent SQL Injection?

パラメータ化されたクエリ: データベース インタラクションを保護するためのガイド

Web 開発では、ユーザー データの保護とアプリケーションのセキュリティの維持が非常に重要です。一般的なセキュリティ リスクの 1 つは、悪意のある攻撃者がユーザー入力を悪用してデータベース クエリを操作しようとする SQL インジェクションです。パラメータ化されたクエリは、この脅威を軽減する効果的なソリューションを提供します。

パラメータ化されたクエリについて

パラメータ化されたクエリは、クエリ ステートメントを入力パラメータから分離する手法です。これには、クエリを一度プリコンパイルし、実行時にパラメータ値を動的に挿入することが含まれます。これにより、あらゆるユーザー入力がコードではなくデータとして扱われるようになり、SQL インジェクションが防止されます。

PHP および MySQL でのパラメーター化されたクエリの例

次のようなシナリオを考えてみましょう。 PHP を使用して MySQL データベース内のユーザーの電子メール アドレスを更新したいとします。パラメータ化されたクエリを使用すると、次のような内容を記述します:

<?php

// Create a prepared statement
$stmt = $mysqli->prepare("UPDATE users SET email = ? WHERE id = ?");

// Bind the parameter to the query
$stmt->bind_param('ss', $email, $id);

// Set the parameter values
$email = 'new@example.com';
$id = 1;

// Execute the query
$stmt->execute();

// Close the prepared statement
$stmt->close();

?>
ログイン後にコピー

この例では:

  • prepare() メソッドは準備されたステートメントを作成し、PDOStatement オブジェクトを返します。 .
  • bind_param() メソッドは、型指定子 (この例では文字列を表す「s」) を使用してパラメータをクエリにバインドします。
  • execute() メソッドは、バインドされたパラメータを使用してクエリを実行します。

パラメータ化されたクエリを使用することで、データベースを悪意のある SQL インジェクションから保護し、データベースの整合性を確保します。データ。

以上がパラメータ化されたクエリは SQL インジェクションをどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート