Рекомендации по проверке вводимых данных в ASP.NET?
какова общая практика проверки входных данных? Другими словами, вы проверяете проверку ввода на стороне клиента, на стороне сервера или на обеих сторонах?
кроме того, если производительность имеет решающее значение для меня, будет ли достаточно только проверки ввода на стороне клиента для моего сайта без каких-либо рисков для безопасности?
6 ответов
всегда выполняйте хотя бы проверку на стороне сервера. Если вы хотите улучшить работу пользователей, проверка на стороне клиента может быть приятной. Это также позволяет избежать ненужных запросов к серверу.
недостаточно только проверки на стороне клиента, и ее можно легко обойти, например, отключив 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 на стороне клиента
вообще с обеих сторон. Клиентскую сторону можно легко обойти намеренно или невинно (с преобладанием noscript), но стоит иметь по причинам удобства использования.
относительно того, представляет ли он угрозу безопасности. Для чего вы используете пользовательский ввод и каков текущий характер вашей проверки?
Если это просто проверка того, что кто-то заполнил обязательные поля в форме, возможно, маловероятно, что будет безопасность риск.
требуется использовать для проверки на стороне сервера, потому что проверку на стороне clie можно довольно легко обойти.
Если вы хотите иметь пользовательский опыт btter, также используйте проверку на стороне клиента. Это также повышает производительность, поскольку уменьшает количество HTTP-запросов к серверу, поскольку недопустимые формы не будут отправляться на сервер.
наиболее распространенным является использование проверки на стороне клиента и сервера.
будет ли достаточной только проверка ввода на стороне клиента для моего веб-сайта без каких-либо рисков для безопасности?
нет, вы должны использовать проверку на стороне сервера. Довольно просто удалить проверку клиента с помощью (например) firebug. Очевидно, что после удаления проверки на стороне клиента evildoer может отправлять любые данные на сервер. Таким образом, проверка на стороне сервера настоятельно необходима тоже.