Санируйте? Когда он не выводится как HTML и не входит в запрос SQL - PullRequest
1 голос
/ 22 декабря 2011

После просмотра некоторых сайтов (например, https://www.owasp.org/index.php/Main_Page) я не нашел никаких ЯВНЫХ упоминаний о том, какие опасности может вызвать следующий процесс;

Пользователь отвечает на вопрос с несколькими вариантами ответов. Отправка формыс «ответом» в качестве скрытого поля.

Страница .php берет его (проверяет, что он содержит менее 100 символов), затем берет правильный ответ из базы данных и сравнивает их (используя ==оператор сравнения).

затем отправляет

 echo "Wrong! The correct answer is ".$correctAnswer; //a hack presumably will always be wrong!!!

В принципе, какой ущерб может быть нанесен, если пользовательский ввод (до 100 символов) застрянет в

$playersAnswer = $_POST['checkAnswer'];

и

 if ($correctAnswer == $playersAnswer){ ....etc

Преимущество для меня заключается в том, что мне не нужно беспокоиться о том, чтобы какие-либо буквы / символы / символы в ответе пользователя были удалены или преобразованы. Поэтому я могу использовать вопросы с пунктуацией, иностранными языками и даже вопросыо JavaScript без страха!

1 Ответ

3 голосов
/ 22 декабря 2011

Если все, что вам нужно сделать, это использовать переменную POST для сравнения:

$correctAnswer == $playersAnswer

, то для этого нет никакой опасности.

Опасность начинается там, где вы используете переменная - в выводе HTML, в запросе к базе данных, в команде exec() или eval() .....

...