Вы проверяете свои переменные URL?

Перед циклом while инициализируйте переменную:

$cnt = 0;

Затем внутри цикла while вы можете поместить это:

$classID = $cnt++%3;

, чтобы увеличить счетчик, а затем модуль на 3. Вы можете настроить это для любого количества столбцов. Используя 3 в качестве модуля, вы получите число от 0 до 2. Затем используйте classID здесь:

<div class="case-info-triple<?php echo '-'.$classID; ?>">

Или вы можете пропустить переменную $cnt и сделать приращение одновременно с эхом classID, вот так:

$classID = 0;

while($classID <= 5) { ?>
    <div class="case-info-triple<?php echo '-'.$classID++%3; ?>">text</div>
<?php }
9
задан Michael Haren 7 October 2008 в 13:16
поделиться

7 ответов

Да. Без сомнения. Никогда не доверяйте вводу данных пользователем.

Для улучшения пользовательского опыта поля ввода могут (и по моему скромному мнению должен) быть проверенным на клиенте. Это может предвосхитить распространение в прямом и обратном направлениях к серверу, который только приводит к той же форме и сообщению об ошибке.

Однако вход должен всегда проверяться на стороне сервера, так как пользователь может просто изменить входные данные вручную в ПОЛУЧИТЬ URL или отправить, обработал данные POST.

В худшем варианте развития событий можно закончить с Внедрением SQL, или еще хуже, уязвимость XSS.

Большинство платформ уже имеет некоторый встроенный способ убрать вход, но даже без этого обычно очень легко убрать вход с помощью комбинации регулярных исключений и справочных таблиц.

  • Скажите, что Вы знаете, что это - целое число, используйте международный Синтаксический анализ или соответствуйте ему против regex "^\\d+ $".
  • Если это - строка, и выбор ограничен, делает словарь и выполняет строку через нее. Если Вы не добираетесь, соответствие меняют струну к значению по умолчанию.
  • Если это - пользователь указанная строка, соответствуйте ему против строгого regex как "^\\w+ $"
41
ответ дан 4 December 2019 в 05:58
поделиться

Как с любым вводом данных пользователем чрезвычайно важно проверить, чтобы удостовериться, что это - то, что Вы ожидаете, что это. Так да!

4
ответ дан 4 December 2019 в 05:58
поделиться

Да, да, и трижды да.

Много веб-платформ сделают это для Вас, конечно, например, Struts 2.

4
ответ дан 4 December 2019 в 05:58
поделиться

Да, проверьте их так полностью, как Вы можете. В PHP я всегда проверяю типы (IsInt(i), IsString(p)).

0
ответ дан 4 December 2019 в 05:58
поделиться

Одна важная причина состоит в том, чтобы проверить на внедрение SQL. Таким образом да, всегда санируйте ввод данных пользователем.

3
ответ дан 4 December 2019 в 05:58
поделиться

Я хочу подчеркнуть, насколько важный это. Я знаю, что первый ответ обсудил Внедрение SQL и Уязвимости XSS. Последний рейв во Внедрении SQL передает закодированный SQL-оператор двоичного файла в строках запроса, которые, если это находит дыру Внедрения SQL, это добавит http://reallybadsite.com'/> к каждому текстовому полю в Вашей базе данных.

Как веб-разработчики мы должны проверить весь вход и убрать весь вывод.

Помните, что хакер не собирается использовать IE для взлома сайта, таким образом, Вы не можете полагаться ни на какую проверку в сети.

1
ответ дан 4 December 2019 в 05:58
поделиться

не, что другие говорят. Вообразите querystring переменную названной nc, который виден, чтобы иметь значения 10, 50 и 100, когда пользователь выбирает 10, 50 и 100 результатов на страницу соответственно. Теперь вообразите кого-то изменяющего это на 50 000. Если Вы просто проверяете, чтобы быть целым числом, показ 50 000 результатов на страницу, влияя просмотры страниц, загрузки сервера, времена сценария и так далее. Плюс это могла быть Ваша вся база данных. Когда у Вас есть такие правила (10, 50 или 100 результатов на страницу), необходимо дополнительно проверить, чтобы видеть, равняется ли значение номера 10, 50 или 100 только, и в противном случае установило его на значение по умолчанию. Это может просто быть минутой (nc, 100), таким образом, она будет работать, если nc будет изменен на 25, 75 и так далее, но примет значение по умолчанию к 100, если она видит что-нибудь выше 100.

2
ответ дан 4 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: