MySQL プリペアド ステートメント: PDO によるデータ セキュリティの確保
MySQL アプリケーションのエスケープ関数と SQL インジェクションの脆弱性について懸念していますか? MySQL のプリペアド ステートメント機能は利用できない場合がありますが、セキュリティを犠牲にする必要があるというわけではありません。
PDO: 安全な代替手段
PHP データ オブジェクト ( PDO) は、データベースと対話するための一貫したインターフェイスを提供する強力なライブラリです。 PDO を使用すると、MySQL データベースに接続し、すべてのデータベース入力をテキスト文字列として扱うことができるため、手動でエスケープする必要がなくなります。
PDO を使用した MySQL への接続
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 は、データベースを悪意のある攻撃から保護するために不可欠なツールです。
以上がPDO は SQL インジェクションから MySQL アプリケーションをどのように保護できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。