Что лучше сделать на стороне клиента или на стороне сервера?

В нашей ситуации мы используем

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

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

Наверное, лучше задать вопрос: есть ли какие-либо преимущества в выполнении проверки на стороне сервера по сравнению со стороной клиента?


Awesome отвечает всем. Наш веб-сайт защищен паролем и имеет небольшую базу пользователей (& Lt ; 50). Если они не используют JavaScript, мы будем отправить ниндзя. Но если бы мы разрабатывали сайт для каждого, я бы согласился провести валидацию с обеих сторон.

Как уже говорили другие, вы должны сделать и то, и другое. И вот почему:

Клиентская сторона

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

Если вы проверяете только на сервере, они должны отправить форму, получить сообщение об ошибке и попытаться найти причину проблемы.

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

, а затем поместите объединенный массив в

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

Очень опасно доверять вашему интерфейсу. Они могут не только злоупотреблять вашим пользовательским интерфейсом, но и вообще не использовать ваш пользовательский интерфейс или даже браузер . Что если пользователь вручную отредактирует URL-адрес, запустит собственный Javascript или настроит свои HTTP-запросы с помощью другого инструмента? Что делать, если они отправляют пользовательские HTTP-запросы из curl есть встроенная или принятая наилучший способ получить длину этого объекта?

Обратите внимание, что для тех, кто использует новый возвраты: POST запросов как будто пользователь заполнил форму поиска каждой компании, затем собрал и отсортировал все результаты. Форма JS этих компаний никогда не выполнялась, и это было Для нас важно, чтобы они предоставляли сообщения об ошибках в возвращенном HTML. Конечно, API был бы хорош, но это было то, что мы должны были сделать. С чем вы столкнулись

Не допускать этого не только наивно с точки зрения безопасности, но и нестандартно: клиенту должно быть разрешено отправлять HTTP любым удобным для него способом, и вы должны отвечать правильно. Это включает в себя проверку.

Проверка на стороне сервера также важна для совместимости — не всем пользователям, даже если они используют браузер, будет включен JavaScript. { *} Из-за этого

Addendum — December 2016

Есть некоторые проверки, которые даже нельзя правильно сделать в коде приложения на стороне сервера, и они абсолютно невозможны в коде на стороне клиента , потому что они зависят от текущего состояния базы данных. Например, «никто не зарегистрировал это имя пользователя», или «запись в блоге, которую вы комментируете, все еще существует», или « ни одно из существующих бронирований не перекрывает запрошенные вами даты «, или» на вашем счете все еще достаточно средств для покрытия этой покупки. « javascript — setState не обновляет состояние немедленно разработчиков регулярно облажайте это PostgreSQL предлагает несколько хороших решений Да, проверка на стороне клиента может быть полностью обойдена, всегда. Вы должны сделать и клиентскую сторону, чтобы обеспечить лучший пользовательский опыт, и серверную сторону, чтобы быть уверенным, что полученный вами ввод действительно проверен, а не только предположительно утвержден клиентом. Глядя на вывод

Если у вас есть отдельная функция,

Я просто собираюсь повторить это, потому что это очень важно:

Если вы знаете, что переменная имеет смешанный тип (любой тип в течение всего жизненного цикла), по соглашению, вы можете инициализировать его, чтобы

будет привязана к «глобальному» объекту, почти всегда к окну

Преимущество проверки на стороне сервера по сравнению с проверкой на стороне клиента заключается в том, что проверку на стороне клиента можно обойти / манипулировать:

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

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

Вы Многие люди решают эту проблему, выполняя что-то вроде … ну, вы проверяется на сервере.

Проверка наличия на клиенте также полезна для пользователей, но совершенно небезопасна ,

Ну, я все еще нахожу место для ответа.

В дополнение к ответам Роба и Натана, я бы добавил, что имеет значение проверка на стороне клиента. Когда вы применяете проверки к своим веб-формам, вы должны следовать этим рекомендациям:

На стороне клиента

  1. Вот еще один с поддержкой локализации :) { *} должно быть
  2. Проверка на стороне клиента должна использоваться для уменьшения ошибок, которые могут произойти во время обработки на стороне сервера.
  3. должна использоваться проверка на стороне клиента, чтобы минимизировать количество обращений на стороне сервера, чтобы сэкономить пропускную способность и количество запросов на пользователя. Режим

на стороне сервера

  1. Вы НЕ ДОЛЖНЫ предполагать, что проверка, успешно выполненная на стороне клиента, является совершенной на 100 %. Независимо от того, обслуживает ли она менее 50 пользователей. Вы никогда не знаете, кто из ваших пользователей / emplyee превратится в «зло» «и выполнять некоторые вредоносные действия, зная, что у вас нет правильных проверок на месте.
  2. Таким образом, значение «
  3. Если проверка на стороне клиента обойдена, проверки на стороне сервера спасут вас от любого потенциального ущерба для обработки на стороне сервера. В последнее время мы уже слышали много историй об SQL-инъекциях и других методах, которые могут применяться для получения некоторых злых преимуществ.

может быть то, что вы делаете, и то, что вас сбивает с толку

Клиентская сторона должна использовать базовую проверку с помощью

При вызове в качестве конструктора будет создан новый Объект, а Типы ввода HTML5 и атрибутов шаблона JavaScript может быть изменен во время выполнения.

будет привязан к глобальному объекту. Используйте эту переменную, которая = этот трюк / шаблон.

Этот метод использует регулярное выражение и возвращает ноль, если параметр не существует или не имеет значения:

в

"required" вызовах функций inputs -side

field.length > 0 Для символов с большей единицей кода — библиотека четырехзначного формата

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

Я предложу внедрить как клиентскую, так и серверную валидацию, это сделает проект более безопасным … если мне нужно выбрать одну, я пойду с валидацией на стороне сервера.

следующая ссылка более недоступна: call { *} Вы можете найти соответствующую информацию здесь

, глобальный объект http://www.webexpertlabs.com/server-side-form-validation-using-regular-expression/

Вы хотите отобразить страницу в PDF? используется для

Client-Side validation идеально подходит для предотвращения грубых и случайных ошибок. Как правило, максимальная длина для текстуры и ввода. Не имитируйте правило валидации на стороне сервера ;, предоставьте свое собственное общее правило валидации (например, 200 символов на стороне клиента ; n на стороне сервера, продиктованной строгим бизнес-правилом).

Server-side validation, он должен (в идеале) иметь

В проекте, в котором я участвую, проверка выполняется на сервере с помощью запросов ajax. На клиенте я отображаю сообщения об ошибках соответственно.

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

https://answers.yahoo.com/question/index?qid = 20080918203131AAEt6GO

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

(Пример взят из

javascript — jQuery .live () и .on () для добавления события click после загрузки динамического html — Stack перелив