Проверка правильности PHP - PullRequest
2 голосов
/ 07 января 2011

У меня есть форма, которую я проверяю на стороне клиента для взаимодействия с пользователем и на стороне сервера для целостности данных. Теперь на стороне клиента, когда ввод неправильный или пустой, я показываю окно предупреждения, которое показывает сообщение об ошибке. Теперь на стороне сервера я должен выполнить те же проверки еще раз (например, Имя может быть только алфавитом) или что еще я должен сделать? 1001 *

Ответы [ 8 ]

7 голосов
/ 07 января 2011

Да, вы должны - что если у пользователя отключен сценарий Java?

Если вы собираетесь пропустить проверку в любом месте - вы должны пропустить ее на стороне клиента.

6 голосов
/ 07 января 2011

Это типичная проблема с проверкой формы

  1. на клиенте (браузере), вы проверяете форму (например, через JavaScript), чтобы любезно помочь пользователю быстро (без обмена сервером) заполнить форму правильно .

  2. Однако пользователь может ввести ошибку / оспорить ваш JavaScript / отредактировать вашу страницу / обойти защиту и контроль страницы ... так что вы никогда не доверяете вводу пользователя и должны всегда перепроверять на стороне сервера входные данные, поступающие от пользователя / браузера / скрипта, т. Е. С PHP.

5 голосов
/ 07 января 2011

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

2 голосов
/ 07 января 2011

Да, да и Да - конечно!

Если у вас есть время, я бы посоветовал реализовать по крайней мере следующее:

  1. Используйте новейшиеВозможности проверки формы браузера http://diveintohtml5.ep.io/forms.html#validation
  2. (если 1 невозможна и дополнительно) Запустите проверку JS для события submit
  3. Запустите проверку и передачу ошибок вместе с представлением в приложенииЛогика
  4. Проверяйте и создавайте исключения в своей бизнес-логике
0 голосов
/ 07 января 2011

Вы должны всегда проверять все данные на стороне сервера.

Проверка на стороне пользователя является частью обеспечения лучшего взаимодействия с пользователем, как указано в pinusnegra;это также помогает снизить использование ресурсов на сервере (поскольку проверка многих запросов выполняется на стороне клиента).Однако это не заменяет проверку сервера, если пользователь отключил JavaScript или злонамеренно пытается вмешаться в работу вашего веб-приложения.

Проведите этот небольшой эксперимент: перейдите к одной из ваших форм, где вы применяете проверку JavaScriptи затем:

  1. сохраните источник (опция просмотра источника в вашем браузере) в локальный файл
  2. измените URL-адрес действия формы на правильный (с полным доменом вместо просто /путь / к / моему / серверному сценарию /)
  3. удалить все проверки JavaScript
  4. отправить ошибочные данные (т. е. только числа в имени)

После этого выТеперь есть неверные данные в вашей базе данных.Я надеюсь, что это проясняет ситуацию.

0 голосов
/ 07 января 2011

Независимо от того, сколько проверок у вас на стороне клиента, вы должны делать это и на стороне сервера. Любой злоумышленник может пройти проверку на стороне клиента и отправить данные на сервер.

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

0 голосов
/ 07 января 2011

Да, так же, как вы написали: проверьте еще раз, потому что можно избежать проверки клиента. Сделайте ту же проверку, что и на стороне клиента, и проверьте ошибки вывода, если ввод неверен.

И помните: фильтруйте и проверяйте ввод, экранируйте выход.

0 голосов
/ 07 января 2011

Вы должны всегда выполнять проверку на стороне сервера для начала, и только после этого выполнять проверку на стороне клиента.(Или наоборот, если выполняется проверка на стороне сервера).

Если для вас важно, чтобы имя содержало только буквенные символы, тогда да, вы должны реализовать проверку на стороне сервера.(не по теме: Вы не должны ограничивать имя буквенными символами.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...