MySQL プリペアド ステートメント: PDO によるデータ セキュリティの確保
MySQL アプリケーションのエスケープ関数と SQL インジェクションの脆弱性について懸念していますか? MySQL のプリペアド ステートメント機能は利用できない場合がありますが、セキュリティを犠牲にする必要があるというわけではありません。
PDO: 安全な代替手段
PHP データ オブジェクト ( PDO) は、データベースと対話するための一貫したインターフェイスを提供する強力なライブラリです。 PDO を使用すると、MySQL データベースに接続し、すべてのデータベース入力をテキスト文字列として扱うことができるため、手動でエスケープする必要がなくなります。
PDO を使用した MySQL への接続
To PDO の使用を開始し、次のようなデータベース オブジェクトを作成します:
$db = new PDO("mysql:host=[hostname];dbname=[database]", '[username]', '[password]');
文字エンコーディングを UTF-8 に設定します:
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->exec('SET NAMES utf8');
プリペアド ステートメントの実行
データベース オブジェクトが確立されたので、プリペアド ステートメントを実行できるようになります:
$id = 1; $q = $db->prepare('SELECT * FROM Table WHERE id = ?'); $q->execute(array($id));
$q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?'); $q->execute(array('Value for Column_1', 'Value for Column_2', $id));
$search = 'John'; $q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?'); $q->execute(array('%'.$search.'%'));
結論
PDO と準備されたステートメントを使用することで、 SQL インジェクションのリスクを軽減することで、MySQL アプリケーションのセキュリティを強化します。シンプルなインターフェイスと堅牢なセキュリティ機能を備えた PDO は、データベースを悪意のある攻撃から保護するために不可欠なツールです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3