PDO で ORDER BY 句パラメータを含むプリペアド ステートメントを安全に使用するにはどうすればよいですか?
Dec 14, 2024 am 11:38 AM準備された PDO ステートメントを使用して ORDER BY パラメーターを設定する
準備された PDO ステートメントを使用して SQL クエリを実行する場合、設定しようとすると問題が発生する可能性がありますORDER BY 句内のパラメータ。この記事では、制限を調べ、代替ソリューションを提供することで、この問題に対処します。
SQL の直接挿入
WHERE 句での params の使用は機能しますが、それらを ORDER に適用すると、 BY 句には問題があることがわかります。この制限を回避するには、SQL クエリに直接挿入する必要があります。ただし、このアプローチでは、次に示すように、クエリのセキュリティと整合性を確保するための厳密な予防措置が必要です。
$order = 'columnName'; $direction = 'ASC'; $query = "SELECT * from table WHERE column = :my_param ORDER BY $order $direction";
演算子と識別子のハードコーディング
すべての演算子と識別子示されているように、ORDER BY 句内の はスクリプト内でハードコーディングする必要があります。ここ:
$orders = array("name", "price", "qty"); $key = array_search($_GET['sort'], $orders); $order = $orders[$key]; $query = "SELECT * from table WHERE is_live = :is_live ORDER BY $order";
同じ原則が方向にも適用されます。
ホワイトリスト用のヘルパー関数
必要なコードの量を最小限に抑えるには、ホワイトリストヘルパー関数を使用できます:
$order = white_list($order, ["name", "price", "qty"], "Invalid field name"); $direction = white_list($direction, ["ASC", "DESC"], "Invalid ORDER BY direction"); $sql = "SELECT field from table WHERE column = ? ORDER BY $order $direction";
この関数は値をチェックしてトリガーします。無効な場合はエラー。この手法により、データの検証とセキュリティが確保されます。
以上がPDO で ORDER BY 句パラメータを含むプリペアド ステートメントを安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

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

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

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

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

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

ホットトピック











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

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

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

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

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