Можно ли отправлять данные формы на сервер из инструментов разработчика

#security #authentication #frontend #developer-tools

#Безопасность #аутентификация #интерфейс #разработчик-инструменты

Вопрос:

Я только что узнал, что можно манипулировать интерфейсом веб-сайта с помощью инструментов разработчика, которые поставляются с некоторыми браузерами. Теперь мой вопрос заключается в том, что если кто-то может манипулировать моими кодами js, HTML и CSS в соответствии с подходящими потребностями и смог отправить запрос на мой веб-сервер, получит ли сервер и обработает запрос как аутентифицированный запрос. Позвольте мне привести подходящий пример:

Допустим, я создал форму, которая использует ajax для получения некоторой информации с моего веб-сервера, в форме у меня есть скрытый ввод, содержащий числа, которые определяют информацию, которая будет отображаться (например, 1 должен отображать информацию для пользователей уровня 1, 2 должен отображать информацию для пользователей уровня 2). Значение скрытого ввода по умолчанию равно 1, теперь, если пользователь (уровень 1) сможет настроить код интерфейса и установить значение 2 перед отправкой, получит ли он информацию, предназначенную для уровня 2.

Если это возможно, как я могу предотвратить подобное, или какова стандартная процедура для обработки подобных ситуаций?

Ответ №1:

Типичными правилами в этом случае являются:

  1. Проверка
  2. Проверка
  3. Проверка

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

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