Моделирование угроз — обширная тема, которая выходит далеко за пределы
нашей книги. Если интересуетесь — обратитесь к соответствующим источникам.
Правила безопасного кодирования
Конечно, только безопасная архитектура и дизайн не могут сделать ваше
приложение абсолютно защищенным. Это лишь один из наиболее важных факторов.
После того, как вы разработали безопасную архитектуру и дизайн, вы должны
также написать безопасный код. При написании кода Web-приложений вы всегда
должны иметь в виду следующие правила:
- Никогда не доверяйте пользовательскому вводу. Предполагайте, что каждый
пользователь — злоумышленник, пока он не докажет обратное. Таким
образом, всегда строго проверяйте пользовательский ввод. Разрабатывайте свой
код проверки достоверности так, чтобы он проверял ввод только правильных
значений, а не неправильных (неправильных значений всегда больше, чем
вы можете себе представить во время разработки приложения).
- Никогда не используйте конкатенацию строк для формирования
операторов SQL. Всегда используйте параметризованные операторы, чтобы ваше
приложение не было уязвимо для атак типа внедрением SQL (SQL-injection), как было описано в главе 7.
- Никогда не выводите данные, введенные пользователем, на Web-страницу
перед их проверкой и кодированием. Пользователь может ввести некоторые
фрагменты кода HTML (например, сценарий), которые инициируют межсайтовую сценарную уязвимость. Поэтому всегда используйте HttpUtility.HtmlEncode() для защиты специальных символов вроде < или > перед
выводом их на страницу или используйте Web-элемент управления, который
выполняет такое кодирование автоматически.
- Никогда не размещайте важные данные, информацию критичную для бизнеса,
либо данные, касающиеся внутренних правил безопасности, в скрытых
полях вашей Web-страницы. Скрытые поля могут быть легко изменены
простым просмотром исходного кода Web-страницы, модификацией и
сохранением в файле. Затем злоумышленник может просто отправить локальную
модифицированную копию Web-страницы на сервер. Подключаемые модули
браузеров могут сделать такой подход столь же простым, как отправка
электронной почты в Microsoft Outlook.
- Никогда не сохраняйте важные или критичные для бизнеса данные в
состоянии вида. Состояние вида — это просто еще одно скрытое поле на
Web-странице, и оно может быть легко декодировано и просмотрено. Если вы
используете установку EnableViewStateMAC=true для своей страницы, то состояние
вида будет подписано кодом аутентификации сообщений, созданном на базе
ключа машины, находящегося в серверном файле machine.config. Мы
рекомендуем использовать EnableViewStateMAC=true сразу после
включения данных в ваше состояние вида, которое не должно быть
изменено пользователями, просматривающими вашу Web-страницу. Подробнее о защите состояния вида читайте в главе 6.
предыдущая следующая страница вначало главы оглавление
802