2009-11-07 3 views
3

Существует веб-сайт с базой данных сервера. Я создаю настольное приложение, которое использует данные из одной из таблиц. Хакер может просто взять пароль с сборки.Как защитить базу данных?

Как защитить базу данных?

ответ

14

Я вообще не хранил информацию о базе данных в приложении. Вместо этого я бы создал API для базы данных на веб-сайте, возможно, с помощью интерфейса RESTful или с запросами, которые возвращают данные в соответствующем формате, таком как JSON, XML или даже обычный текст. Затем приложение может вызвать эти веб-службы и обработать результаты. Вся информация о вашей базе данных остается на сервере, где она (надеюсь) безопасна.

+0

Как весь этот мусор может защитить базу данных? Необходимо следующее: правильное управление доступом, более широкое использование ограничений целостности и представлений для мелкозернистой безопасности (безопасность на основе возможностей). Я могу подумать только об одной причине, чтобы изолировать программную среду СУБД: она отстойна и может быть обманута своим протоколом связи. Но даже в таком случае я не понимаю, что может внести избыточный текстовый протокол, поскольку сеть, вероятно, является узким местом. – MaD70

+0

Этот «мусор» может защитить базу данных, потому что вы можете ограничить доступ, который пользователь имеет к контенту, не рискуя своей безопасностью. Во всех случаях это может быть не оптимальное решение, но я, безусловно, это рассмотрю. –

+0

Я озадачен. Вы читали что-то из моего комментария, помимо первого предложения? – MaD70

0

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

Или, выберите разумную архитектуру, как упоминает Томас. Базы данных предназначены для хранения и извлечения данных, они не являются общим сервером приложений.

1

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

Моя альтернатива реализация:

  1. Подключение к серверу с помощью защищенного туннеля какой-то.
  2. Сохраните пароль, зашифрованный на диске.

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

Этот вариант не является жизнеспособным, если предположим, что вы хотите распространять приложение для клиентов.

1

Ваш может

А) создать три системы яруса. Ваш клиент может взаимодействовать с сервером, который, в свою очередь, взаимодействует с базой данных. Сервер сохраняет учетные данные доступа.

B) создавать личные учетные записи в базе данных для своих пользователей. Эта модель двухуровневая применима, если требуется точное управление доступом к данным. Например. во внутреннем приложении с разными пользовательскими ролями.