Существуют тонны хороших бумаг о разработке и разработке для безопасности (и даже набор сообщений на ТАК), но все они, кажется, концентрируются на том, что необходимо сделать.
То, что я после, однако, является think-like-a-hacker контрольным списком. Список простых действий, которые Вы должны для прохождения через, после того как Вы сделаны с разработкой, для проверки решения, безопасен.
(ОБНОВЛЕНИЕ: я главным образом интересуюсь контрольным списком черного ящика - "переходят к странице, пробуют это и что" вид вещей, но whitebox контрольный список мог бы представлять интерес также.)
Вот что-то, что я придумал до сих пор:
HtmlEncode
и UrlEncode
http://www.example.com/foo?bar=HugeAmountOfData
для проверки Вы ограничиваете исходные данные и делаете граничные проверки.Ярус веб-узлов.
[ValidateAntiForgeryToken]
атрибут для предотвращения нападений Подделки Запроса перекрестного Сайта. Response.Write
(любой прямо или косвенно), никогда не используется для отображения ввода данных пользователем.Сервисный уровень.
Уровень базы данных.
SELECT *
но всегда указывайте список столбцов явно.@@TRANCOUNT
, и т.д.), и явно фиксируют/откатывают его.Комментарии? Исправления? Пропавшие без вести шагов?
При создании этого общественной Wiki не стесняйтесь редактировать столько, сколько Вам нравится.
Чтобы добавить в список:
Black: DoS-атаки - используйте tinyget или аналогичные Чтобы имитировать DoS-атаки, посмотрите, что делает ваше приложение.
Черный: атаки канонизации. Немного упомянуто, может быть, особое внимание может быть уделено атаке на обход каталога в случае загрузок.
Белый: Использование файлов cookie для конфиденциальной информации? См. Файлы cookie, которые не используются для конфиденциальных данных и не сохраняются локально в течение заданного интервала. Черный: сниффинг во временной папке IE / XYZ для файлов cookie.
Black: Опять же, используйте скрипт tinyget или попробуйте вручную проверить, сработает ли подбор пароля методом перебора или в вашем приложении есть интеллектуальные задержки / отказы для атак с подборами пароля.
Черный: Проведите любую атаку и посмотрите, будет ли администратор автоматически уведомлен об атаке или только злоумышленник знает об этом.
«Убедитесь, что ваши решения по безопасности не основываются на информации заголовков HTTP» - заголовки http используются для аутентификации ntml / kerberos? Может быть, просто не используйте их глупо, не изобретайте и не полагайтесь на реферер и т. Д.?
Общее: Использование коммерческого сканера безопасности черного / белого ящика может быть дорогостоящим, но в противном случае может быть сложно проводить регрессионные тесты безопасности .
Прилипание в основном на конкретные вещи MVC:
<%:
и MVCHTMLSTRING
. JSONREQUESTBEHAVIOR.ALLOWGET
для его не может вернуть массив. Robots.txt
Учетные данные пользователя проверяются на каждом запросе, либо получают или публикуют или другие, чтобы подтвердить аутентификацию пользователя
Проверьте авторизацию пользователя (после проверки аутентификации) для каждой чувствительной работы
Выходные кэширования, особенно если вы реализуете собственную систему членства
Solaris имеет pldd
. Для Linux можно вызвать ldd
в исполняемом файле или pmap
в запущенном процессе или просмотреть /proc/PID/maps
для сопоставленных библиотек.
Как новинка для .Net, Начать с веб-приложения Следующая комбинация может помочь
Если требуется надежная разработка
Выше будет выполнять большую часть
Если вы хотите получить больший контроль над процессом разработки, я бы рекомендовал использовать
WPF - это следующее поколение приложений на базе Windows/Desktop, не основанных на веб-технологиях. Он действительно предоставляет шаблон для приложения на основе браузера, но, вероятно, ограничен Internet Explorer, но не всеми браузерами. Я не уверен в WPF, некоторые могут добавить к нему. Поскольку вы намереваетесь работать с веб-приложением, это не было бы хорошей идеей, чтобы начать с
IDE для всех выше определенно Visual Studio 2008 +, так как он предоставляет доступ ко всем блокам/компонентам вашего приложения, включая просмотр и дизайнер для Database. Вы можете загрузить одну из них здесь
для пробной версии за 3 месяца
Надеюсь, что она поможет
-121--4460247- Убедитесь, что не выполняется слепая привязка данных формы к модели, всегда используя TryStartModel < T >
поверх TryStartModel
.