準備されたステートメントとパラメーター化されたクエリは、PHPアプリケーションでのSQL注入をどのように防ぐことができますか?
SQLインジェクションは、SQLクエリ内のユーザー入力を処理するアプリケーションにとって重要な脅威のままです。 攻撃者は脆弱性を活用して悪意のあるコマンドを注入し、データベース全体を侵害する可能性があります。この記事では、PHPでのSQL注入を防ぐための堅牢な方法について詳しく説明しています。
SQL注入脅威を理解する
未検証のユーザー入力がSQLクエリに直接影響する場合、SQLインジェクションエクスプロイトが発生します。 たとえば、
$userInput = $_POST['user_input']; mysql_query("INSERT INTO users (username) VALUES ('$userInput')");
$userInput
'; DROP TABLE users; --
コア原則は、SQLクエリ構造からデータを分離することです。準備されたステートメント(またはパラメーター化されたクエリ)は、次のことでこれを達成します
クエリ/データ分離:データベースサーバーは、データ値とは独立してSQLクエリを解析します。 文字列としてのデータ:
データ:すべてのデータは、悪意のあるSQLコードを中和する文字通り文字列として扱われます。PDO(PHPデータオブジェクト)を使用する
- :推奨されるアプローチ
- PDOは、異なるデータベースシステム全体で一貫したインターフェイスを提供します。 準備されたステートメントでPDOを使用する方法は次のとおりです
- mysqli(mysqlの改善):mysql の代替
(php 8.2以降):
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute(['name' => $name]); foreach ($stmt as $row) { // Process each row }
および
:
execute_query()
2。 データベース接続のベストプラクティス
$result = $db->execute_query('SELECT * FROM employees WHERE name = ?', [$name]); while ($row = $result->fetch_assoc()) { // Process each row }
pdo:prepare()
execute()
最適なセキュリティのためにエミュレートされた準備されたステートメントを無効にします:
$stmt = $db->prepare('SELECT * FROM employees WHERE name = ?'); $stmt->bind_param('s', $name); // 's' denotes a string parameter $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { // Process each row }
mysqli:
堅牢なエラー報告を有効にして、文字セットを指定します:3。 追加のセキュリティ上の考慮事項
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
ダイナミッククエリ:準備されたステートメントがデータパラメーターを処理する間、クエリ構造自体をパラメーター化することはできません。動的クエリの場合、許可された値を制限するためにホワイトリストを使用してください
結論mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $dbConnection = new mysqli('localhost', 'username', 'password', 'database'); $dbConnection->set_charset('utf8mb4');
以上が準備されたステートメントとパラメーター化されたクエリは、PHPアプリケーションでのSQL注入をどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
