Почему нам нужна серверная сторона, а также проверка на стороне клиента для веб-приложений?

есть ли какая-либо причина высокого уровня для проверки на стороне клиента и на стороне сервера для веб-приложения ?

8 ответов


потому что проверка на стороне клиента может быть нарушена.

например-в интернете, если вы используете javascript для проверки, очень легко отключить javascript или изменить его работу с помощью таких инструментов, как FireBug.

событие с другими методами клиента / сервера, возможно, что ссылка на данные будет свернута, а "проверенные" данные могут быть изменены по пути к серверу ( "Человек Посередине" атака).

В общем, Максим "никогда не доверяйте клиенту" является причиной того, что вам нужно всегда проверять на сервере.

вы можете спросить в этом случае, зачем проверять на клиенте? Для того, чтобы обеспечить немедленную обратную связь.


пользователь может изменить проверку javascript локально (сохранить страницу и сделать что-нибудь с ней) или javascript может быть отключен в браузере. Поэтому в этом случае проверка на стороне клиента бесполезна. Следовательно, вы также должны проверить на сервере


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


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

серверная сторона поймает любые проблемы проверки, которые по какой-то причине не были пойманы проверкой на стороне клиента.


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

проверка на стороне клиента не является пуленепробиваемой, и поэтому, если что-то проверяется на стороне клиента, это не означает, что оно будет действительным, когда оно прибывает на ваш сервер.


проверка на стороне клиента используется для следующих
1) соответствие данных ограничениям длины и формата
2) мгновенная индикация или обратная связь с пользователем

Проверка На Стороне Сервера
1) более продвинутые проверки против бизнес-логики
2) проверьте наличие изменений критерия. например, вы заказываете книгу из amazon, и после того, как вы оформляете заказ, вы получаете указание на то, что книга отсутствует, потому что кто-то другой купил его всего за несколько минут до
3) Проверьте, опубликовал ли предполагаемый пользователь данные. Клиентские вещи, такие как cookies и javascript, можно манипулировать, поэтому серверу необходимо аутентифицировать и испортить проверку данных.

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


цель проверки в режиме реального времени на стороне клиента (т. е. когда пользователь перемещается из поля в поле, а не после того, как пользователь нажимает SUBMIT), чтобы дать обратную связь с пользователем как можно скорее. Если номер социального страхования, например, требует 9 цифр, а пользователь набрал 8, вы не хотите ждать, пока пользователь завершит остальную часть формы и нажмет SUBMIT, чтобы указать на ошибку, даже если проверка происходит на стороне клиента. Ждать, пока после отправки для проверки клиентской стороны почти бессмысленно-все это действительно щадит ваш сервер и вашу пропускную способность. Указывая на ошибки как они сделаны обычно приводит к более высокой скорости заполнения формы, потому что это более простой опыт в целом для пользователя-не будет списка ошибок: "пожалуйста, исправьте все ошибки ниже". Но вам все равно нужно иметь проверку на стороне сервера, чтобы обеспечить целостность данных в любом случае. Вышибала ночного клуба стоит перед дверью клуба, а не на стоянке через дорогу.


Если у вас есть приложение с несколькими таблицами в базе данных, ваша проверка на стороне сервера может быть просто набором ограничений (часть вашего дизайна таблицы данных). Мы можем подумать, что у нас нет никакой проверки на стороне сервера, потому что это не слой среднего сервера, а ограничения уровня БД.

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

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

Это неплохая идея, чтобы не повторяться с проверкой с обеих сторон.

конечно, есть приложения, которые требуют много внимания к своим данным, тогда важна не только проверка на стороне сервера (например, часть безопасности бизнес - модели, но и тестовое покрытие для большинства случаев использования-для ввода клиента.

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