Какие функции мне нужны, чтобы открыть приложение ASP.Net в Интернете? - PullRequest
1 голос
/ 21 апреля 2011

Прежде чем разрешить доступ к новому сайту, какие шаги необходимо предпринять, чтобы убедиться, что он безопасен и «готов к работе»?

Пока у меня есть следующее:

  • регистрация ошибок (через ELMAH)
  • SSL включен, и у меня перенаправление с HTTP на HTTPS
  • <customErrors mode="RemoteOnly" />
  • Скомпилировано без отладки

Мой текущий технический стек - IIS7 & ASP.Net MVC3.

Я уверен, что забыл или не знаю многих других предметов. Любой совет?

Ответы [ 4 ]

3 голосов
/ 21 апреля 2011
  1. Защита от инъекций sql. Используйте хранимые процедуры ИЛИ параметризованные операторы SQL. Вы можете использовать динамический sql - но будьте очень осторожны, и если вы это сделаете - убедитесь, что вы используете параметризованные запросы и не формируете операторы SQL 'inline', добавляя переменные.

  2. Защита от подделки межсайтовых запросов (CSRF) путем использования Html.AntiForgeryToken

  3. Убедитесь, что трассировка выключена

  4. Убедитесь, что пользовательские ошибки включены, чтобы клиенту отображались желтые экраны смерти (т. Е. Сведения об ошибках).

  5. Защитите от межсайтовых сценариев, убедившись, что любой вывод, отображаемый в вашей системе из вашей модели, базы данных и т. Д., Кодируется с использованием синтаксиса <%: на ваших страницах aspx и простого @XXXX на ваших страницах mvc 3 , поскольку mvc3 кодирует все ПО УМОЛЧАНИЮ, что является большим улучшением по сравнению с предыдущими методами. </p>

  6. Убедитесь, что в вашей базе данных нет тестовых аккаунтов.

  7. Убедитесь, что никакие действия не могут быть выполнены только строкой запроса - например, передавая / MyApp / DeleteUser / 10. Требуется сообщение для выполнения действия, и эти сообщения должны использовать Html.AntiForgeryToken и [ValidateAntiForgeryToken] на вашем контроллере

  8. Убедитесь, что любые пользователи, редактирующие информацию на вашей странице, не могут редактировать (используя такой инструмент, как fiddler) первичный ключ, скрытый на странице, таким образом изменяя, какую запись они редактируют при публикации изменений. Вы можете хэшировать, например, CustomerId на странице в скрытое поле и сравнивать его после публикации, чтобы убедиться, что он совпадает с тем, что есть в модели.

  9. Посетите меня в следующем месяце у технического редактора в Атланте, чтобы поговорить о безопасности:)

1 голос
/ 21 апреля 2011
  1. Если вы используете ELMAH, убедитесь, что доступ к обработчику elmah.axd защищен и не открыт. В противном случае вы даете потенциальным хакерам ценную информацию.

  2. Убедитесь, что ваш веб-сервер полностью обновлен с исправлениями и автоматически загружает / устанавливает их, когда они доступны от MS. Слишком много сайтов не в состоянии применить их и получить pwned.

  3. Убедитесь, что у вас нулевой динамический sql на вашем сайте; или, по крайней мере, все обрабатывается с помощью параметризованных запросов. Вдобавок к этому, убедитесь, что учетные данные пользователя базы данных заблокированы, чтобы иметь только те возможности, которые вам действительно нужны (подсказка: уровень dbo НЕ подходит).

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

0 голосов
/ 21 апреля 2011

Чтобы добавить вышесказанное, я всегда запускаю бесплатный инструмент Xenu (http://home.snafu.de/tilman/xenulink.html#Description), чтобы проверить наличие битых ссылок. Даже если вы используете другой инструмент, это обеспечивает отличную двойную проверку.

Рассмотрите возможность размещения файла web.config в каждой подпапке с соответствующими разрешениями. Например, если все изображения хранятся в папке \ images, тогда эта папка не сможет обслуживать файл ASCX, только файлы с соответствующим расширением изображения.

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

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

0 голосов
/ 21 апреля 2011

Первое, что приходит на ум, это поисковая оптимизация (SEO).Для начала используйте SEO Toolkit от MS.

...