Должны ли вы выполнять проверку на стороне сервера?

Если вы выполняете проверку на стороне сервера, или это нормально, просто выполните проверку на стороне клиента?

@TheTXI

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


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

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

Ответы

Ответ 1

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

Ответ 2

Хорошо, хорошо, все ваши коды верны. Что происходит, когда хакер заменяет ваш javascript одним из своих предпочтений или просто отправляет POST и GET, как если бы это был ваш код?

Проверка на клиенте является проблемой удобства использования.

Валидация в точке ИСПОЛЬЗОВАНИЯ - проблема безопасности.

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

Например, вы проверяете данные против SQL-инъекции перед сохранением в базе данных SQL - библиотека сделает это для вас, если вы выберете хороший. Вы проверяете данные против CSS, когда вы показываете его как HTML. Но если вы предоставите данные как XML, RSS или JSON, тогда проверка будет различной - если вы проверили ее только на входе, вы бы не предотвращали эксплойты для других форматов, и ваша процедура ввода была бы привязана к выходу форматы, которые вы выбираете.

Ответ 3

Я всегда рассматриваю его как

  • Проверка клиента применима
  • Проверка сервера для безопасности.

Ответ 4

Да, вы всегда должны выполнять проверку на стороне сервера. Javascript/AJAX приятно дать пользователю мгновенную обратную связь, но он не дает вам никакой защиты на стороне сервера.

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

Ответ 5

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

Ответ 6

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

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

Следовательно, важно иметь серверные проверки.

Ответ 7

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

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

Ответ 8

Абсолютно важно иметь проверку на стороне сервера, поскольку пользователь может отключить JavaScript или просто отправить любые данные, которые они хотели обработчику на стороне сервера, так как им не нужно использовать вашу JS-расширенную форму для отправки данные.

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

Ответ 9

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

Ответ 10

Да, вам все равно нужно сделать сервер проверки. пост AJAX по-прежнему остается POST. Кто-то может легко написать страницу, которая делает POST с плохими данными, или еще проще использовать такой инструмент, как плагин Tamper Data в Firefox, чтобы изменить данные после того, как ваш Javascript подтвердил его.

Ответ 11

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

Ответ 12

Если вы не проверяете на сервере, кто-то перезапишет вашу проверку на стороне клиента с помощью Firebug или просто полностью обойдется с другим расширением Firefox под названием Poster. Удачи вам в очистке базы данных!

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

Ответ 13

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

Ответ 15

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

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

Ответ 16

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

Ответ 17

Проверка на стороне клиента противоречит понятию "всемирная паутина", потому что причина, по которой мы создали html-текст, состоит в том, что каждое устройство должно иметь возможность обрабатывать rsponce, хотя и маленькое устройство. Теперь проверка на стороне клиента требует вычислительной мощности используемого устройства, которое не является тем, что ожидает "www" от устройства, потребляющего html. Валидации на стороне клиента особенно важны для экономии пропускной способности, так как скорость интернета растет с каждым днем, и тогда мы не будем требовать проверки на стороне клиента.