2013-05-15 18 views
2

Во-первых, чтобы объяснить, у нас есть несколько сайтов, которые все подключаются к центральной базе данных. Как правило, мы не предоставляем клиентам доступ к FTP для своего веб-сайта, поэтому они не могут получить доступ к файлам с учетными данными БД в них. 99,9% времени это нормально.Шифрование учетных данных базы данных

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

Теперь я уверен, что они не собираются украсть наши учетные данные mysql и подключить и уничтожить наши БД, но, без сомнения, вы согласитесь на его огромный риск для безопасности.

Есть ли способ:

а) подключаться к базе данных без их видеть учетные данные в коде

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

Довольно уверен, что ничего не будет на 100% безопасным, поскольку предоставление им доступа к FTP означает, что они могут делать то же самое, что и я, но интересно, есть ли у кого-нибудь идеи?

+0

Да, зарядите их немного больше, скажем 1000 в год и более, и позвольте им взорвать свою собственную коробку. – Drew

+0

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

+1

Простой ответ заключается в том, что вам нужен посредник между кодом, к которому у них есть доступ, и к процессам, к которым вы хотите запретить доступ. Затем этот посредник может выполнять любые проверки, которые вы сочтете уместными, будь то проверка кодовой базы, с которой она взаимодействует, или просто ограничение операций, которые могут быть выполнены. Если последний, вы просто создали API, через который выполняется вся деятельность базы данных; в простых приложениях я создал такой API в самой базе данных, используя учетные данные учетной записи MySQL и хранимые процедуры. – eggyal

ответ

0

Единственный способ сделать это «безопасно» без написания API RESTful (который вы указали не выполнимо) состоит в том, чтобы создать для них специальную учетную запись пользователя в вашем MySQL, которая не может получить доступ к записям, не принадлежащим им , Честно говоря, вы должны сделать это для всех своих клиентов, если вы делаете это «правильно», хотя я понимаю, что это может быть много обслуживания.

Что касается шифрования, не существует способа шифрования учетных данных БД для клиента и их дешифрования для входа в БД без какого-либо промежуточного кода. Это не имеет значения, если клиент имеет свою собственную учетную запись MySQL для доступа.

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