MYSQL ограничивает использование CREATE, DROP, ALTER

Мой интернет-провайдер предлагает только одну учетную запись пользователя для доступа к базе данных MYSQL. Насколько я знаю, мне нужно сохранить учетные данные для подключения к моей базе данных в виде открытого текста в моем PHP-коде. Следовательно, обычные пользователи моего сайта имеют административный доступ к моей базе данных. Обычно они не могут злоупотреблять этим доступом, потому что официальные бэкдоры, которые я разработал, требуют пароля. [Способ использования пароля для аутентификации пользователя заключается в поиске хеша пароля в списке пользователей базы данных, а затем в проверке, помечен ли пользователь как администратор.] Но кто-то, кто может взломать файловую систему сервера, может прочитайте код PHP и узнайте пароль для единственного пользователя, которого предоставляет мой провайдер.

Помимо наличия двух пользователей с разными правами доступа к базе данных, есть ли способ раздвоить доступ, чтобы только суперпользователи могли выполнять CREATE, ALTER и DROP?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
53
1

Ответы 1

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

Вы можете прочитать https://dev.mysql.com/doc/refman/8.0/en/privacy-provided.html, чтобы увидеть отдельные типы привилегий, которые вы можете предоставить пользователям, и каким операциям они соответствуют.

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

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

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

Это относится к общей категории «что, если у пользователей есть доступ к моей файловой системе?» Если это то, что вам нужно учитывать, то вы не можете позволить им иметь доступ к вашей файловой системе. Реализуйте свою услугу как программное обеспечение как услугу (SaaS).

Я, вероятно, должен был обновить свой вопрос. Я перешел к другому интернет-провайдеру и выбрал VPS, где я могу использовать GRANT в свое удовольствие. Другая часть моего решения заключается в шифровании учетных данных подключения к MySQL с помощью секретного слова, которое я могу ввести, когда мне нужен полный доступ. Пользователи подключаются с «секретом», который раскрывается в сценарии входа в систему HTML (следовательно, не совсем секретным), но они получают только возможность выполнить SELECT для таблицы, которая позволяет им войти в систему.

Walter Oney 15.01.2020 23:26

Другие вопросы по теме