0

これは難しい質問のように思えるかもしれませんが、ユーザー入力のサニタイズは絶えず私を混乱させます。そして私は決定的な答えを得たいと思っています。

だからここにシナリオがあります

  1. 顧客はWebフォームに記入します。
  2. PHPは、必須フィールドが適切に入力されていることを確認します。入力されていない場合は、入力が完了するまで顧客は続行できません。
  3. その場合、確認のためにユーザー入力が画面に表示され、入力データも非表示のフォーム要素として保存されます。
  4. 次に、顧客は入力を確認し、非表示の要素はさらに処理するために送信されます。

データは最後の最後までエスケープされるべきではないという原則に基づいて、これはポイント3の非表示要素に格納されているデータにどのように適用されますか(明らかに、この時点で画面に印刷されたデータはhtmlentities()も適用しました)

非表示の要素にhtmlentitiesを使用する必要がありますが、これは技術的には最終段階ではありません。パート4の後、変数をDBまたは電子メールに貼り付ける前に再度使用するためです。

私はこれを完全に間違っているかもしれないことを十分に承知していますので、どんな考えでも大歓迎です。^ _ ^

4

1 に答える 1

2

ユーザーの入力をページに書き出す場合は、常にエスケープする必要があります。そうしないと、人々が入力に JavaScript などを追加するのを止めたり、非表示のフィールドから抜け出してページにコードを挿入しようとしたりするのを止めることはできません。そうそう、非表示フィールドでも htmlentities を使用してください。ユーザーがそれらを見ることができないからといって、人々がそれらにコードを挿入するのを止めることはできません。

于 2012-04-24T14:13:20.520 に答える