Почему проверка на стороне клиента представляет собой угрозу безопасности, а не сервера проверка на стороне?

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

8
задан Xaisoft 20 August 2010 в 14:45
поделиться

4 ответа

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

Только на стороне клиента: как уже упоминалось, не нужно много времени, чтобы обойти эти проверки, если кто-то хочет отправить искаженные данные для вашего сервера (например, SQL-инъекция). NoScript не запускает код проверки javascript, а некоторые браузеры позволяют пользователю активно изменять все загруженные javascript и html, чтобы пользователь мог отцепить проверочный javascript от элементов управления.

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

Клиентская и серверная сторона: вы получаете безопасность проверки на стороне сервера, то, что пользователю будет трудно вмешиваться, и удобство проверки ввода без необходимости отправлять страницу (независимо от того, проверяете ли вы через чисто локальную javascript или AJAX).

Если вам абсолютно необходимо выбрать что-то одно, то лучше всего будет на стороне сервера. Но вам не нужно выбирать одно или другое.

17
ответ дан 5 December 2019 в 05:18
поделиться

Если вы выполняете проверку только на стороне клиента, кто-то может отключить javascript (или изменить код js, например, с помощью firebug). Таким образом, все проверки, сделанные в js, будут бесполезны, и пользователь может вставить недопустимые данные в вашу систему.

5
ответ дан 5 December 2019 в 05:18
поделиться

Я полагаю, вы говорите о веб-сценарии?

Если вы выполняете проверку на стороне клиента с помощью Javascript, что произойдет, если у пользователя отключен Javascript? Затем они могут отправить данные на сервер, который не был проверен.

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

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

2
ответ дан 5 December 2019 в 05:18
поделиться

Используя различные инструменты, такие как Fiddler , Noscript , Web Developer и т. Д., Я мог отключить клиент- боковая проверка javascript и изменение данных, отправляемых на ваш сервер. В зависимости от типа данных и того, что сервер делает с ними, можно инициировать атаку с использованием SQL-инъекции, попытаться поставить под угрозу безопасность сервера или просто сохранить поддельные данные.

Простой пример: допустим, у вас есть проверка на стороне клиента, чтобы убедиться, что почтовый индекс состоит из 5 цифр или 5 + 4 цифр. Если я отключу клиентский сценарий, я могу оставить 24-значное значение на месте. Если ваш сервер больше не проверяет значение, а база данных способна хранить все 24 цифры, то я сохранил фиктивные данные.

8
ответ дан 5 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: