Риски ненадежного подключения к SQL Server?
Каков риск не использовать доверенное соединение?
Например, вот сценарий: я создал очень простое приложение, которое имеет всего 4-5 строк кода, которое использует соединение SQL со строкой моего соединения в файле web.config, отправляет команду выбора в мою базу данных и отображает результаты в интерфейс.
Каковы недостатки безопасности здесь?
Редактировать:
Я знаю, что доверенное соединение связано с аутентификацией. Интересно, я не знаю, как взломать систему, если я ее не использую? (Я буду использовать свое приложение на серверах моей компании, и приложение является общедоступным приложением, поэтому его может использовать каждый член компании, так зачем мне доверенное соединение, если это приложение локальной компании?)
3 ответа
Чтобы взглянуть на это с другой стороны, главное преимущество надежных соединений заключается в том, что вам не нужно управлять паролями в вашем приложении. Если вашему приложению требуется пароль для подключения к SQL Server, то куда вы помещаете пароль (или строку подключения), чтобы пользователь приложения (или другие разработчики, или системные администраторы, или внешние консультанты и т. Д.) Не могли прочитать его, но вы можете все еще легко изменить, когда требуется?
Пароли в файлах или реестре часто могут быть прочитаны пользователями, потому что, когда они запускают приложение, оно должно восстановить пароль, поэтому пользователю необходим доступ. Или системный администратор или консультант имеет доступ к файловой системе, в которой находится файл конфигурации приложения. Обфусцирование пароля с помощью какой-либо формы шифрования возможно, но тогда вам нужно защитить и управлять ключом дешифрования. Жесткое кодирование пароля в приложении затрудняет его изменение, а также повышает вероятность того, что пароль будет виден в системе контроля версий, которая обычно является относительно небезопасной системой (на практике, если не задумано). Вы можете создать веб-сервис, от которого приложение получит пароль при запуске, но затем вам придется как-то аутентифицировать доступ к сервису.
Использование надежной аутентификации полностью исключает все это, делая операционную систему ответственной за аутентификацию, и, если вы не программист мирового уровня, существует вероятность того, что Windows предоставляет более надежный механизм, чем вы можете создать самостоятельно.
Я буду использовать свое приложение на серверах моей компании, и приложение является общедоступным приложением, так что его может использовать каждый член компании, так зачем мне доверенное соединение, если это приложение локальной компании?
Угрозы безопасности при ненадежном соединении связаны с тем, как вы храните пароли SQL-сервера и используете их в приложении. если вы храните пароли в конфигурационном файле или жесткий код в программе, любой другой разработчик, имеющий доступ к вашему коду, может просмотреть его и, в худшем случае, изменить базу данных таким образом, что это может испортить приложение или украсть конфиденциальную информацию. это также будет нарушением конфиденциальности, и ваша компания может быть привлечена к ответственности (вы не можете просто представить, что может произойти).
@Pondlife также разработал очень хорошо.
AFAIK, единственный дополнительный уровень безопасности, который дает доверенное соединение, - это аутентификация. Если вы используете надежное соединение, Windows выполнит аутентификацию вашего соединения в Active Directory.
Быстрый Google дает эту ссылку: