私はSQLインジェクションPHP 5.6とPDOではエスケープ文字が必要ですか?
$stmt = $DBH->prepare("SELECT * FROM T_Users WHERE User_Name = :UN");
$stmt->bindParam(':UN', $user_name);
$stmt->execute();
を防止するために、MySQLのデータを入力/読み取るためにPDOを使用するには、私はデータベースに入る前かでデータベースからデータを表示する前に文字をエスケープする必要があります任意の理由があります。ブラウザ? JavaScriptコードを自分のデータベースに記録して悪意のあるユーザーが自分のウェブサイトや他のユーザーを悪用する可能性はありますか?
ありがとうございます!
そのような状況では、何も手動でエスケープしないでください。データバインディングはエスケープします。手動でエスケープすると、 "ダブルエスケープ"文字になります。あなたが望むものではありません。それはすべて実際にドキュメントで説明されています。 – arkascha
Prepared、Parameterized Queriesを使用することで、すでにSQLインジェクションを処理しています。もう何も脱出する必要はありません。 –
悪意のあるユーザーが自分のユーザー名をJavaScriptコードとして選択した場合、そのユーザー名がブラウザに表示されると他のユーザーに危害を及ぼすことがありますか?たぶん私はあまりにもパラノイドすぎているかもしれません... – Mike