私が常に混乱しているのは、入力エスケープと、SQL インジェクションなどの攻撃から保護されているかどうかです。
HTTP POST を使用して PHP ファイルにデータを送信するフォームがあるとします。入力フィールドに次のように入力し、フォームを送信します。
"Hello", said Jimmy O'Toole.
この POST データを受け取る PHP ページの入力を印刷/エコーすると、次のようになります。
\"Hello\", said Jimmy O\'Toole.
ここがややこしいポイントです。この入力文字列を (My)SQL に入れて実行すると、(引用符がエスケープされるため) データベースに正常に入力されますが、SQL インジェクションは停止しますか?
入力文字列を取得して次のようなものを呼び出すと、次のようmysqli real_escape_string
になります。
\\"Hello\\", said Jimmy O\\'Toole.
したがって、(My)SQL 経由でデータベースに入ると、次のようになります。
\"Hello\", said Jimmy O\'Toole.
これには明らかにスラッシュが多すぎます。
では、入力が HTTP POST を介してエスケープされたものである場合、(My)SQL に対して安全にするために再度エスケープする必要がありますか? それとも、ここで明らかな何かが見えないだけですか?
助けてくれてありがとう。