Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Не полагайтесь на валидацию на стороне клиента !!!
Это просто для честного пользователя. Нечестный пользователь может обойти его в кратчайшие сроки.

Если я отключил 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
}

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

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

FluentValidation Является ли рамки на основе правил, которая подтверждает объекты .NET на стороне сервера. Это поставляется с поставщиком правил для xval, что является еще одним каркасом, что позволяет вам связать свой выбор серверов и корректирования корректирования на стороне клиента. Он поддерживает генерацию валидаторов JQuery на стороне клиента

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

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

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

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

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

Наиболее распространенным является использование клиентских и серверных сторон.

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

Нет, вы должны также использовать проверку на стороне сервера. Это довольно просто удалить проверку клиента с (например) Firebug. Очевидно, что после удаления клиентской стороной валидации Evildoer может отправлять любые данные на сервер. Таким образом, проверка Server Side также необходимо также.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top