Проверка, какие проверки вы обычно выполняете в своих веб-приложениях? - PullRequest
2 голосов
/ 18 марта 2009

Я создаю общедоступное веб-приложение. Поэтому я буду проверять каждое поле настолько полно, насколько смогу. Я имею в виду, что если кто-то введет что-то недопустимое, он будет знать точно что это было (давая понять, что ему нужно исправить).

Я последовал примеру Скотта Гатри в электронной книге NerdDinner . Мне нравится идея иметь всю мою проверку в файлах базового класса (как частичный класс).

Проверка, которую я выполняю, такова:

  • Минимальное значение - убедитесь, что строки имеют хотя бы определенную длину
  • Макс. Значение - убедитесь, что строки имеют максимальную длину (на основе свойств поля в БД)
  • int проверяет - убедитесь, что целочисленные поля могут быть правильно проанализированы в int
  • расширение файла - убедитесь, что загруженные расширения имеют правильный тип

Мой вопрос: какие типичные проверки вы делаете в своих веб-приложениях? Может быть, я что-то упускаю из виду. ;)

Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 18 марта 2009

Вы должны стараться максимально использовать существующие фреймворки для валидации. Написание всеобъемлющей библиотеки валидации - это сложная и трудоемкая работа. Это одна из тех вещей, которую лучше оставить команде людей, посвятивших себя разработке, таких как jQuery validation плагины и подобные проекты. Существует множество действительно хороших библиотек валидаторов , которые могут сэкономить вам много времени и усилий.

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

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

  • Требуется проверка поля, очевидно. Возможно, вы уже получили это, просто проверив минимальную длину в ваших полях.
  • Общая проверка регулярных выражений. Убедитесь, что у вас есть какой-нибудь способ выполнить такую ​​проверку в общем. Это поможет вам в случае, если есть какое-то конкретное поле, которое требует уникальной формы проверки, не найденной где-либо еще на вашем сайте. Убедитесь, что ваш API достаточно гибок для добавления проверки правильности на основе регулярных выражений.
  • E-mail. Вам это понадобится.
  • Номера телефонов. Они могут быть жесткими из-за всех форм, в которые они могут входить (все числовые, иногда с буквенными символами, иногда международные цифры, которые следуют за различными форматами)
  • Даты и время также важны, однако вы должны рассмотреть возможность использования какого-либо средства выбора даты / времени, чтобы уменьшить вероятность ошибки, не позволяя пользователю вводить значение.
  • Убедитесь, что вы включили возможности проверки для не связанных с текстовыми полями полей, таких как раскрывающиеся списки, переключатели, флажки и т. Д. Я забыл об этом в прошлом просто из-за недосмотра, но они становятся важными.
  • Соответствующие поля. Например, при подтверждении пароля оба поля должны совпадать. Это не будет использоваться только на одной странице. Подумайте о сбросе пароля, административных страницах, пользовательских панелях управления и т. Д.
  • Хотя это и несколько сложно, вы также можете включить проверку последовательности. Например, некоторые опции на вашем сайте требуют, чтобы вы сначала выбрали другие варианты. Другим примером является то, что определенные параметры должны выбираться только в том случае, если вы сначала выберете какую-то другую комбинацию параметров. Это то, что вы, возможно, не сможете включить в общий API, но об этом стоит подумать.
1 голос
/ 18 марта 2009

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

Для имен хостов вы можете проверить, что DNS возвращает IP-адрес. Если это не так, сообщите пользователю, но не обязательно отклоняйте имя хоста по этой причине. Возможно, пользователь предварительно настраивает то, чего еще не существует. Это зависит от конкретного применения.

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

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

И всегда, всегда разрешайте пользователю вводить данные в наиболее привычном формате, даже если впоследствии вам придется удалять лишние данные. Например, пусть пользователь (но не требует от пользователя) ввести номер телефона 1-800-555-1212, даже если вы позже удалите символы "-".

1 голос
/ 18 марта 2009

Вы хотите проверить на SQL-инъекцию , XSS и CSRF . Вы можете использовать эти инструменты для Firefox, чтобы помочь вам проверить их. Кроме того, существуют такие вещи, как проверка того, что имя пользователя не совпадает с паролем, регулирование входа в систему и т. Д. Проверка ваших CSS и XHTML тоже неплоха, хотя я не думаю, что вы это имели в виду.

0 голосов
/ 18 марта 2009

Не совсем уверен, что это имеет отношение к asp.net-mvc, но ...

Я всегда стараюсь избегать чрезмерной проверки (очевидно, вам нужно выполнить простую проверку, чтобы убедиться в отсутствии ошибок БД). Это решение по месту в соответствии с вашими бизнес-правилами. Некоторые поля должны иметь строгие правила проверки, например, номер кредитной карты. Но просто всегда думайте о том, как валидация будет обслуживать пользователя. Регулярное выражение редко требует совпадения со всеми возможными адресами электронной почты - это действительно раздражает, когда сайт не разрешает добавлять + знаки в вашей электронной почте. В большинстве случаев ваше приложение будет хорошо, если вы позволите людям вводить телефонные номера так, как они хотят. И всегда вначале угадайте себя, когда вы собираетесь поставить обязательное правило на поле.

Я рекомендую блок приложения проверки Entlib для простого в использовании и расширении фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...