Лучшие практики для контроля ввода в ASP.NET?

Какова обычная практика контроля ввода? Другими словами, Вы проверяете на контроль ввода на клиентском на серверной стороне или с обеих сторон?

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

10
задан Daniel Dyson 3 July 2010 в 22:12
поделиться

6 ответов

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

Одной проверки на стороне клиента недостаточно, и ее можно легко обойти, например, отключив javascript.

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

11
ответ дан 3 December 2019 в 17:19
поделиться

Чаще всего используется проверка как на стороне клиента, так и на стороне сервера.

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

Нет, вам также следует использовать проверку на стороне сервера. Удалить проверку клиента с помощью (например) firebug довольно просто. Очевидно, что после удаления проверки на стороне клиента злоумышленник может отправлять любые данные на сервер. Таким образом, проверка на стороне сервера также настоятельно необходима.

1
ответ дан 3 December 2019 в 17:19
поделиться

НЕ ПОЛАГАЙТЕСЬ НА ВАЛИДАЦИЮ НА СТОРОНЕ КЛИЕНТА!!!
Она существует только для честных пользователей. Нечестный пользователь может обойти ее в мгновение ока.

Если я отключу Javascript, я могу разнести ваше приложение в пух и прах. Всегда ставьте валидацию на стороне сервера... это не так сложно

Web Forms

''# VB
If Page.isValid Then
    ''# submit your data
End If

// C#
if(Page.isValid) {
    // submit your data
}

MVC

''# VB
If ModelState.IsValid Then
    ''# submit your data
End If

// C#
if(ModelState.IsValid) {
    // submit your data
}

Как только валидация на стороне сервера заработает, добавьте валидацию на стороне клиента. Это улучшит работу пользователя

4
ответ дан 3 December 2019 в 17:19
поделиться

Одна вещь, которую я бы порекомендовал, это использование FluentValidation, xVal и JQuery вместе для выполнения проверки на стороне клиента и сервера на основе одних и тех же правил.

FluentValidation - это основанный на правилах фреймворк, который проверяет объекты .net на стороне сервера. Он поставляется с поставщиком правил для xVal, который является еще одним фреймворком, позволяющим соединить выбранные вами фреймворки валидации на стороне сервера и на стороне клиента. Он поддерживает генерацию валидаторов JQuery на стороне клиента

4
ответ дан 3 December 2019 в 17:19
поделиться

Необходимо использовать как минимум проверку на стороне сервера, поскольку проверку на стороне клиента можно довольно легко обойти.

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

1
ответ дан 3 December 2019 в 17:19
поделиться

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

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

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

2
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

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