2010-06-26 4 views
1

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

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

ответ

2

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

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

+0

Почему downvote? – Oded

2

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

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

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

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

2

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

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

1

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

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

1

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

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

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

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

Смежные вопросы