Лучшие практики для проверки ввода в ASP.NET? - PullRequest
10 голосов
/ 03 июля 2010

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

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

Ответы [ 6 ]

11 голосов
/ 03 июля 2010

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

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

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

4 голосов
/ 04 июля 2010

Я бы порекомендовал использовать FluentValidation , xVal и JQuery вместе для выполнения Client и проверка на стороне сервера на основе тех же правил .

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

4 голосов
/ 03 июля 2010

НЕ ПОЛЬЗУЙТЕСЬ ВАЛИДАЦИЕЙ СТОРОН КЛИЕНТА !!!
Это просто для честного пользователя.Недобросовестный пользователь может обойти это в кратчайшие сроки.

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

Веб-формы

''# 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
}

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

2 голосов
/ 03 июля 2010

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

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

1 голос
/ 03 июля 2010

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

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

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

1 голос
/ 03 июля 2010

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

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

...