2013-12-23 3 views
2

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

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

Мои вопросы в отношении этого являются:

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

ii. Как можно обеспечить такую ​​связь? Я могу легко настроить SSL-соединение с сервером с помощью сертификата безопасности, созданного OpenSSL, однако я не уверен, является ли это правильным способом обеспечения безопасности для настольного приложения или этот метод в основном используется для HTTPS. И КОГДА кто-то вообще должен защищать соединение (есть ли случаи, когда это не имеет значения, например, если все, что я делаю, посылает булевы туда и обратно?)? Любые хорошие ресурсы, которые обсуждают эти проблемы? Например, на моем ПК с ОС Windows установлено много приложений, но я не вижу, чтобы многие из них устанавливали сертификат безопасности на моем ПК. Что дает?

Полное описание: Я программист C++ (hobbyist), использующий библиотеки Boost для удовлетворения потребностей в сети и OpenSSL для моей криптографии SSL. Тем не менее, я надеюсь, что это можно ответить, не обращая особого внимания на эти факты :)

ответ

1

Ответы:

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

ii. Это зависит от того, какие угрозы для вашей системы. Если данные, которые вы используете в веб-службе, упомянутых выше, являются данными, которые не чувствительны и не являются специфичными для пользователя (скажем, приложение, которое позволяет выполнять поиск в общедоступных фотогалерах, поэтому ваш веб-сервис просто возвращает набор результатов с URL-адресами), то вы возможно, будет проще с помощью SSL. Другие приложения обходятся, устанавливая свой собственный сертификат множеством способов. Они могут либо получить сертификат от CA, как verisign, поэтому ваш компьютер уже доверяет ему. Или они могут развернуть публичный сертификат с двоичным кодом своего приложения и обрабатывать его внутри своего приложения (это форма закрепления сертификата).

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

+0

Спасибо за ваши комментарии. В рассматриваемом приложении будет использоваться некоторая форма аутентификации пользователей, поэтому ваша рекомендация определенно будет соблюдаться. Думаю, я пойду на охоту за книгами по этой теме. Еще раз спасибо. – declay

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