これは少し混乱しています。私はhtmlspecialchars()
について読んでおり、XSS攻撃を防ぐためにテキストエリアPOST
にこれを使用する予定です。私は通常htmlspecialchars()
がブラウザに送信されるHTML出力を生成するために使用されることを理解しています。しかし、わからないことは次のとおりです。MySQLに挿入する前にhtmlspecialchars()を使用するのは良いですか?
1)htmlspecialchars()
をMySQLに挿入する前に、ユーザ入力データに安全な練習をしていますか?私はすでにSQLインジェクションを防ぐためにパラメータ化された値を持つPDO準備文を使用しています。
2)またはhtmlspecialchars()
を(パラメータ化されていれば)挿入された値に使用することについて心配する必要はありません。htmlspecialchars()
を使用してMySQLから結果を取得し、ユーザーに表示しますか?
#2は正しい答えです – jszobody
HTMLエスケープ(1)はデータベースにはあまり関係ありません。早すぎるエスケープはWebページ以外の出力チャネルで後で干渉する可能性があるため、一般的に(2)が好まれます。初心者にとっては、HTMLエスケープの早い段階が推奨されるかもしれません。あまりにも早く、後で忘れたよりも早い。 – mario
テキストログを生成したいとします。その後、エスケープを取り消す必要があります。代わりに、可能な最後の瞬間に脱出して、それが適切であることを知ってください。 –