Рекомендации по безопасности в пакете SDK для Visual Studio
Вы должны понимать принципы безопасности для расширений VSPackage, чтобы создавать лучшие продукты.
Безопасный продукт помогает защищать следующее:
конфиденциальность, целостность и доступность информации клиента;
целостность и доступность ресурсов обработки под контролем администратора или владельца системы.
Уязвимость системы безопасности
Уязвимость системы безопасности — это слабое место в продукте, которое делает невозможным предотвращение вредоносных действий злоумышленника, даже если продукт используется правильно. Далее приводятся некоторые примеры.
Получение на компьютере более высоких разрешений, чем имеются у пользователя.
Перехват управления работой компьютера пользователя.
Компрометация данных на компьютере пользователя.
Важно!
Нельзя предполагать, что приложение будет выполняться только в определенных средах. Ваше приложение может использоваться с параметрами, которые вы не ожидали, особенно если приложение становится популярным. Вместо этого следует считать, что код будет работать в неблагоприятных средах, и проектировать, писать и тестировать код соответствующим образом.
Продукты и системы, разработанные и собранные с безопасностью в качестве основной функции, являются более надежными, чем продукты и системы с безопасностью в качестве второстепенной функции. Безопасные продукты также более застрахованы от критики в СМИ, более привлекательны для пользователей, и их поддержка и обновление обходятся дешевле.
Опасные API
Вызовы некоторых функций могут приводить к возникновению нежелательных уязвимостей, если они используются неправильно; запрет их использования не всегда обеспечивает безопасный код. Тем не менее, некоторые программные проекты получили значительный выигрыш в безопасности в результате использования запрета функций, которые трудно использовать безопасно, как одного из многих методов безопасной разработки. Дополнительные сведения содержатся в приложении А книги Writing Secure Code Майкла Говарда (Michael Howard) и Дэвида Леблана (David LeBlanc), вышедшей в издательстве Microsoft Press.
Большинство проблем безопасности проистекает из доверия входным данным без их адекватной проверки. Убедитесь, что выполняется трассировка данных по мере их поступления в код и выясняются последствия операций с этими данными. Вы можете писать безопасный код с использованием большинства функций, если входные данные имеют правильный формат и проверяются на надежность.
Проблемы контроля учетных записей (UAC)
Функция контроля учетных записей (UAC) имеет последствия для безопасности, которые вы должны понимать. Она уменьшает уязвимость операционной системы и приложений для атак злоумышленников.
Дополнительные сведения о контроле учетных в Windows 7 см. в разделе Что такое контроль учетных записей?.
Дополнительные сведения о контроле учетных в Windows 8 см. в разделе Что такое параметры контроля учетных записей?.
До появления контроля учетных записей разработчики обычно выполняли Visual Studio с разрешениями администратора, даже если они не требовались. Вы должны выполнить разработку и тестирование расширения как обычный пользователь, чтобы это расширение гарантированно не требовало повышенных прав без необходимости.
Обратите внимание, что контроль учетных записей также влияет на развертывание. Пакеты установки должен быть правильно разработаны для поддержки контроля учетных записей. Неправильно разработанный пакет обычно вызывает ошибки типа "отказано в доступе", так как установщик пытается использовать права обычного пользователя для выполнения задачи, требующей повышенных прав.
См. также
Рекомендации по безопасности в пакеты VSPackage
Ресурсы для создания защищенных приложений
Key Security Concepts