Сомнения на стороне клиента

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

Из вышеприведенного утверждения мой разум начал спрашивать: 1) какую проверку я могу выполнить с JS на стороне клиента. 2) Существует ли какое-либо правило, согласно которому программисты могут решать, где нужно выполнять проверку, на стороне клиента или на стороне сервера?

Я строю веб-приложение на основе Java

5 ответов

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

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

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

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

Проверка на клиенте - это проблема юзабилити.

Проверка в точке USAGE - это проблема безопасности.

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

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

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

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

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

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

Проверка на стороне клиента только для того, чтобы сэкономить время клиента, поэтому, когда они вводят и неверное значение, он говорит "Неверное значение" без необходимости перезагрузки страницы.

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

Сервер должен всегда проверять введенные данные. Проверка клиента только для удобства использования.

Другие вопросы по тегам