Я не уверен, что это по теме или нет, но это так специфично для .NET WinForms, что, я считаю, здесь имеет больше смысла, чем на сайте security stackexchange.
(Кроме того, он строго связан с безопасным кодированием, и я думаю, что он по теме, так как любой вопрос спрашивает об общих уязвимостях веб-сайта, которые я вижу по всему сайту.)
В течение многих лет наша команда разрабатывала моделирование угроз на проектах веб-сайта. Часть нашего шаблона включает OWASP 10 лучших и других известных уязвимостей, поэтому, когда мы делаем моделирование угроз, мы всегда делаем убедитесь, что у нас есть документированный процесс для устранения каждой из этих распространенных уязвимостей.
Пример:
SQL Injection (Owasp A-1)
- Стандартная практика
- Использовать хранимые параметризованные процедуры, где это возможно, для доступа к данным, где это возможно.
- Использовать параметризованные запросы, если хранимые процедуры невозможны. (Использование сторонней БД, которую мы не можем изменить)
- Сбросить одиночные кавычки, только если указанные выше варианты невозможны.
- Разрешения базы данных должны быть разработаны с принципом наименьших привилегий.
- По умолчанию пользователи/группы не имеют доступа
- При разработке документируйте доступ, необходимый для каждого объекта (Таблица/Просмотр/Сохраненная процедура) и бизнес-потребность для доступа.
- [надрез]
В любом случае мы использовали Top 10 OWASP в качестве отправной точки для общеизвестных уязвимостей, характерных для веб-сайтов.
(Наконец, на вопрос)
В редких случаях мы разрабатываем приложения WinForms или Windows Service, когда веб-приложение не отвечает потребностям. Мне интересно, есть ли эквивалентный список общеизвестных уязвимостей безопасности для приложений WinForms.
Сверху моей головы я могу думать о нескольких...
- SQL Injection по-прежнему вызывает озабоченность.
- Переполнение буфера обычно предотвращается с помощью CLR, но это более возможно, если использовать не управляемый код, смешанный с управляемым кодом.
- .NET-код может быть декомпилирован, поэтому хранение конфиденциальной информации в коде, в отличие от зашифрованного в app.config...
Есть ли такой список или даже несколько версий такого списка, из которого мы можем заимствовать, чтобы создать собственный? Если да, где я могу его найти?
Я не смог его найти, но если он есть, это будет большой помощью для нас, а также других разработчиков WinForms.