VB.Net Безопасные пароли к базе данных? - PullRequest
1 голос
/ 26 июня 2010

Недавно я сделал небольшое приложение для друга, а затем сделал его общедоступным, при этом я забыл, что оно подключается к моей базе данных MS SQL и проверяет значения. Кто-то использовал Red Gate .Net Reflector, чтобы получить мой пароль и уничтожить все это. Я связался с их провайдером, и они изучают его, по-видимому, у этого человека есть статический ip.

Так что это урок, который я получил за высокую цену. Как я могу предотвратить это снова? Как я могу уйти от небезопасной строки подключения, которую они смогли использовать?

Ответы [ 5 ]

2 голосов
/ 26 июня 2010

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

Шифрование строки подключения - это начало, но ваша программа должна знать, как ее расшифровать, чтобы она была полезной.Если ваша программа сможет расшифровать ее, злоумышленник также сможет - вы можете повлиять только на объем работы, который ему необходимо выполнить.

Поэтому, на мой взгляд, вы должны предоставить сервис только для чтения.

2 голосов
/ 26 июня 2010

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

Шифрование строки подключения не очень поможет, я думаю, что ее можно легко расшифровать с помощью встроенных инструментов или Crack.net.

2 голосов
/ 26 июня 2010

Никогда не жестко кодируйте строки подключения.Используйте предоставленный для этого раздел конфигурации (connectionStrings), и если действительно параноик, зашифруйте его .

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

1 голос
/ 27 июня 2010

Использование строк подключения и зашифрованных разделов в вашей конфигурации не остановит этот тип атаки, он предназначен только для того, чтобы сделать файл конфигурации нечитаемым на компьютере, отличном от установленного.

Единственный безопасныйМожно создать веб-службу, которая подключается к вашей базе данных для извлечения данных, а затем убедиться, что для входа в веб-службу требуется только минимальное количество разрешений, или заставить пользователя веб-службы войти в систему, и они будут выдавать себя за этого пользователя.подключение к базе данных.

Похоже, у вас нет защиты от брандмауэра для остановки внешних подключений напрямую к вашей базе данных, поэтому мне интересно, какие еще более опасные порты вы могли открыть для доступа в Интернет ???

Использованиемежсетевой экран для ограничения доступа к вашему серверу по протоколу http, а протоколы https уменьшают шансы на успешную атаку.

1 голос
/ 26 июня 2010

Если вы suuuper paranoid, запрашивайте пароль у системного администратора при каждом запуске приложения (возможно, через интерфейс администратора). Таким образом, это только резидентная память.

Мне нравится этот вопрос.Как сказал driis, даже для зашифрованных строк подключения вам нужно хранить пароль (или ключ, или что-то еще) для расшифровки зашифрованной строки подключения.Просто больше слоев той же проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...