ASP.NET контрольный список безопасности MVC

Существуют тонны хороших бумаг о разработке и разработке для безопасности (и даже набор сообщений на ТАК), но все они, кажется, концентрируются на том, что необходимо сделать.

То, что я после, однако, является think-like-a-hacker контрольным списком. Список простых действий, которые Вы должны для прохождения через, после того как Вы сделаны с разработкой, для проверки решения, безопасен.

(ОБНОВЛЕНИЕ: я главным образом интересуюсь контрольным списком черного ящика - "переходят к странице, пробуют это и что" вид вещей, но whitebox контрольный список мог бы представлять интерес также.)


Вот что-то, что я придумал до сих пор:

Контрольный список черного ящика безопасности

  • Отправьте неправильные/злонамеренные данные (примеры здесь?) удостоверяться, которые вводят, проверено для типа, длины, формата и диапазона JavaScript.
  • Выключите клиентскую проверку и повторите шаг выше, для проверки этого
    • Вы не только сверяетесь с JavaScript, но проверяете на стороне сервера также
    • вход проверен на сервере для типа, длины, формата и диапазона
    • вход свободной формы санирован
    • вывод, который включает вход, кодируется HtmlEncode и UrlEncode
  • Вставьте чрезвычайно большой объем данных в строку запроса согласно http://www.example.com/foo?bar=HugeAmountOfData для проверки Вы ограничиваете исходные данные и делаете граничные проверки.
  • Посетите действие POST через, ДОБИРАЮТСЯ, чтобы удостовериться, что "форма утверждает, что" действия ограничиваются для POST.
  • Если применимо загрузите файл неправильного размера/формата (огромный файл, пустой файл, исполняемый файл с переименованным расширением, и т.д.), чтобы удостовериться, что загрузки обрабатываются корректно.
  • (как проверить от UI?) гарантируют, что абсолютные URL используются для навигации.
  • Получите доступ к URL как к пользователю без корректных полномочий, чтобы удостовериться, что полномочия явно тестируются через атрибуты действия/контроллера.
  • Получите доступ к URL, предоставляющему несуществующую подробную информацию (как несуществующие идентификаторы продукта, объекты, у Вас нет доступа к, и т.д.) для проверки корректная ошибка (404 или 403 и т.д.) возвращается.
  • Получите доступ к чувствительной странице через HTTP, чтобы удостовериться, что это доступно через HTTPS только.

Безопасность контрольный список Whitebox

Ярус веб-узлов.

  • В режиме отладки взломайте код так, чтобы он выдал исключение, чтобы удостовериться, что он перестал работать надежно. Удостоверьтесь, что Вы ловите исключения, и журнал подробно изложил сообщения, но не пропускайте информацию клиенту.
  • Если применимо удостоверьтесь действия MVC, ограничиваются на POST/получать только, конкретной пользовательской роли, чем-либо еще?.
  • Удостоверьтесь, что действия POST сопровождаются с [ValidateAntiForgeryToken] атрибут для предотвращения нападений Подделки Запроса перекрестного Сайта.
  • Удостовериться Response.Write (любой прямо или косвенно), никогда не используется для отображения ввода данных пользователем.
  • Удостоверьтесь, что уязвимые данные не передаются в полях формы или строках запроса.
  • Удостоверьтесь, что Ваши решения безопасности не полагаются на информацию о HTTP-заголовках.

Сервисный уровень.

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

Уровень базы данных.

  • Удостоверьтесь, чтобы сохраненные procs извлечения не использовали SELECT * но всегда указывайте список столбцов явно.
  • Удостоверьтесь, чтобы обновили/удалили сохраненный procs, работают в рамках транзакции (через @@TRANCOUNT, и т.д.), и явно фиксируют/откатывают его.

Комментарии? Исправления? Пропавшие без вести шагов?

При создании этого общественной Wiki не стесняйтесь редактировать столько, сколько Вам нравится.

19
задан 3 revs, 2 users 100% 4 February 2016 в 05:46
поделиться

4 ответа

Чтобы добавить в список:

Black: DoS-атаки - используйте tinyget или аналогичные Чтобы имитировать DoS-атаки, посмотрите, что делает ваше приложение.

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

Белый: Использование файлов cookie для конфиденциальной информации? См. Файлы cookie, которые не используются для конфиденциальных данных и не сохраняются локально в течение заданного интервала. Черный: сниффинг во временной папке IE / XYZ для файлов cookie.

Black: Опять же, используйте скрипт tinyget или попробуйте вручную проверить, сработает ли подбор пароля методом перебора или в вашем приложении есть интеллектуальные задержки / отказы для атак с подборами пароля.

Черный: Проведите любую атаку и посмотрите, будет ли администратор автоматически уведомлен об атаке или только злоумышленник знает об этом.

«Убедитесь, что ваши решения по безопасности не основываются на информации заголовков HTTP» - заголовки http используются для аутентификации ntml / kerberos? Может быть, просто не используйте их глупо, не изобретайте и не полагайтесь на реферер и т. Д.?

Общее: Использование коммерческого сканера безопасности черного / белого ящика может быть дорогостоящим, но в противном случае может быть сложно проводить регрессионные тесты безопасности .

4
ответ дан 30 November 2019 в 05:17
поделиться

Прилипание в основном на конкретные вещи MVC:

  • в ASP.NET 4, понять <%: и MVCHTMLSTRING .
  • Используйте HTML-помощники, когда это возможно вместо RAW HTML, так как он увеличивает шансы, которые вы помните, чтобы кодировать (помощники делают это для вас)
  • анализировать все виды использования JSONREQUESTBEHAVIOR.ALLOWGET для его не может вернуть массив.
  • не изобретают все, что связано с безопасностью. Используйте доказанные, поддерживаемые, вне форумы.
  • Не утеряйте информацию о безопасности в Robots.txt
4
ответ дан 30 November 2019 в 05:17
поделиться
  • Учетные данные пользователя проверяются на каждом запросе, либо получают или публикуют или другие, чтобы подтвердить аутентификацию пользователя

  • Проверьте авторизацию пользователя (после проверки аутентификации) для каждой чувствительной работы

  • Выходные кэширования, особенно если вы реализуете собственную систему членства

1
ответ дан 30 November 2019 в 05:17
поделиться

Solaris имеет pldd . Для Linux можно вызвать ldd в исполняемом файле или pmap в запущенном процессе или просмотреть /proc/PID/maps для сопоставленных библиотек.

-121--1323826-

Как новинка для .Net, Начать с веб-приложения Следующая комбинация может помочь

Если требуется надежная разработка

  • Asp.Net WebForms (Engine)
  • ADO.NET (Data Access)
  • SQL SERVER (DB)

Выше будет выполнять большую часть

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

  • ASP.NET MVC (Engine)
  • LinqToSQL, NHibernate (DataAccess)
  • SQL SERVER (DB)

WPF - это следующее поколение приложений на базе Windows/Desktop, не основанных на веб-технологиях. Он действительно предоставляет шаблон для приложения на основе браузера, но, вероятно, ограничен Internet Explorer, но не всеми браузерами. Я не уверен в WPF, некоторые могут добавить к нему. Поскольку вы намереваетесь работать с веб-приложением, это не было бы хорошей идеей, чтобы начать с

IDE для всех выше определенно Visual Studio 2008 +, так как он предоставляет доступ ко всем блокам/компонентам вашего приложения, включая просмотр и дизайнер для Database. Вы можете загрузить одну из них здесь

для пробной версии за 3 месяца

Надеюсь, что она поможет

-121--4460247-

Убедитесь, что не выполняется слепая привязка данных формы к модели, всегда используя TryStartModel < T > поверх TryStartModel .

1
ответ дан 30 November 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: