3

私は最近、送信データでユーザーを信頼してはならないという記事を読みました。

それでは、次のフォーム入力があるとしましょう:

<label for="input1">Answer 1</label>
<input type="radio" name="question1" value="answer1" id="input1" />
<label for="input2">Answer 2</label>
<input type="radio" name="question1" value="answer2" id="input2" />
<label for="input3">Answer 3</label>
<input type="radio" name="question1" value="answer3" id="input3" />

投稿された回答が回答のある配列内にあるかどうかを確認しても大丈夫ですか:

$question1_answers = array("answer1", "answer2", "answer3");
$answer1 = $_POST['question1'];
if ( in_array($answer1, $question1_answers) ) {
    echo "OK!";
} else {
    echo "Please select proper answer!";
}

それとも、上記のコードは不要で、単に読むだけ$_POST['question1']で十分でしょうか?

4

3 に答える 3

4

投稿された回答が回答のある配列内にあるかどうかを確認しても大丈夫ですか:

はい!そのようなラジオボタンの値を検証することは、非常に良い習慣です。あなたが読んだ記事は正しいです。ユーザーが提供したデータを盲目的に信頼すべきではありません。

于 2012-10-10T07:24:01.800 に答える
2

あなたの状況では、安全で十分です。どうやら、その投稿はSQLインジェクション、クロスサイトスクリプティングなどに関するものでした。ここでSQLインジェクションについて読むことができます:

http://en.wikipedia.org/wiki/Sql_injection

ここでのクロスサイトスクリプティングについて:

http://en.wikipedia.org/wiki/Cross-site_scripting

于 2012-10-10T07:27:00.143 に答える
1

どちらの方法も正しいです。しかし、あなたが投稿した最初の方法をお勧めします。

于 2012-10-10T07:24:21.987 に答える