Каковы проблемы безопасности для предоставления строки подключения к базе данных на стороне клиента для 2-уровневых приложений
Недавно я проводил исследование для создания многоуровневого приложения. Каждая тема, которую я прочитал, говорит о том, что 3-уровневая архитектура лучше, чем 2-уровневая, потому что, открывая строку подключения базы данных на стороне клиента, вы создаете большую дыру в безопасности вашей системы. Все эти статьи просто объясняют, что указывать расположение базы данных - плохая идея, и ни одна из них не объясняет почему.
Кто-нибудь может мне помочь и объяснить мне темы разоблачения местоположения базы данных? Я имею в виду, что они будут знать местоположение, но они не будут знать имя пользователя и пароль, чтобы войти в систему и изменить базу данных. Что делает 3-уровневую архитектуру более безопасной, чем 2-уровневая? Это только дополнительная надежда, чтобы добраться до базы данных?
Заранее спасибо, Константин Патак
1 ответ
Строка подключения включает в себя имя пользователя и пароль. Если ваше клиентское приложение может напрямую обращаться к базе данных, то пользователь может проверить клиентское приложение и извлечь учетные данные подключения, чтобы сделать то же самое.
Средний уровень будет предоставлять API, которые соответствуют операциям, которые вы хотите, чтобы клиенты могли выполнять. Клиент защищен от внутренней реализации, которая может включать или не включать базу данных. Вы сможете изменить реализацию, не влияя на клиента. Возможно, вы обнаружите, что нагрузка настолько высока, что вам нужно переключиться с RDS на NoSQL. Клиент не должен знать или изменить. Возможно, вы начнете кэшировать некоторые результаты, не затрагивая вашу базу данных. Опять же, клиент не должен знать или изменить. Вот почему отрасль стандартизировалась вокруг того, чтобы не использовать базу данных непосредственно из клиентских приложений.