#security #authentication #frontend #developer-tools
#Безопасность #аутентификация #интерфейс #разработчик-инструменты
Вопрос:
Я только что узнал, что можно манипулировать интерфейсом веб-сайта с помощью инструментов разработчика, которые поставляются с некоторыми браузерами. Теперь мой вопрос заключается в том, что если кто-то может манипулировать моими кодами js, HTML и CSS в соответствии с подходящими потребностями и смог отправить запрос на мой веб-сервер, получит ли сервер и обработает запрос как аутентифицированный запрос. Позвольте мне привести подходящий пример:
Допустим, я создал форму, которая использует ajax для получения некоторой информации с моего веб-сервера, в форме у меня есть скрытый ввод, содержащий числа, которые определяют информацию, которая будет отображаться (например, 1 должен отображать информацию для пользователей уровня 1, 2 должен отображать информацию для пользователей уровня 2). Значение скрытого ввода по умолчанию равно 1, теперь, если пользователь (уровень 1) сможет настроить код интерфейса и установить значение 2 перед отправкой, получит ли он информацию, предназначенную для уровня 2.
Если это возможно, как я могу предотвратить подобное, или какова стандартная процедура для обработки подобных ситуаций?
Ответ №1:
Типичными правилами в этом случае являются:
- Проверка
- Проверка
- Проверка
Не доверяйте исключительно клиенту сообщать вам, есть ли у него разрешение или нет. У вас должна быть информация, чтобы определить это на стороне сервера, используйте ее. Проверьте запросы на стороне клиента и убедитесь, что у пользователя, запрашивающего действие, действительно есть разрешения на это, и что отправляемые им данные действительны. Конечно, вы можете провести проверку на стороне клиента для обеспечения хорошего пользовательского интерфейса, но всегда поддерживайте ее проверкой, аутентификацией и авторизацией на стороне сервера.
Лучший способ предотвратить ваш пример сценария: не отправляйте данные на стороне клиента, которые они не должны видеть, а затем полагайтесь на клиента, чтобы скрыть их. Если пользователь не должен их видеть, не отправляйте их.