0

したがって、HTMLに出力する場合は、ユーザー入力をサニタイズする必要があることを常に聞いて読んでいます。私が疑問に思っているのは、エラーが発生した場合に出力される入力をサニタイズする必要があるかどうかです。

たとえば、フォームのエラー処理では、ページが再表示され、エラーメッセージが表示され、ユーザーに問題が発生したことを通知するだけでなく、入力をフォームの値として出力するため、ユーザーは再入力する必要がありません。それと彼らは彼らがどこで間違っていたかを見ることができます。私の質問は、フォームフィールドの値としての出力時にユーザーの入力をサニタイズするためにhtmlspecialchars()を使用する必要があるかどうかです。

これが私の入力フィールドの1つが今どのように見えるかです。

<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo $_POST['email']; } // Output the user's input if an error occurred ?>" maxlength="50" />

これが私がすべきだと思うことです。

<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo htmlspecialchars($_POST['email']); } // Output the user's input if an error occurred ?>" maxlength="50" />

どんな助けでも大歓迎です。

4

1 に答える 1

1

はい、を介してデータを実行する必要がありますhtmlspecialchars

そうでなければ、2つの大きな問題があります。

  1. サードパーティは、攻撃サイトにアクセスしたユーザーとして好きなデータ(を含む)を送信して、サイトにリンクする(またはJSで非表示のフォームを送信する(使用し$_POSTているため、このアプローチを使用する必要がある))可能性があります。"><script...
  2. ユーザー"がデータにを入力した場合(タイプミスであるか、データに実際に"文字が含まれているため)、データを表示すると壊れます。
于 2012-07-16T09:51:08.617 に答える