БД содержит записи с пустым именем пользователя и подозрительными записями БД - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу убедиться, что мой php веб-сайт и пользователь для входа в базу данных имеют только обязательные разрешения / привилегии для maria db. Также я хотел бы знать

  • , если определенные записи являются подозрительными или, по крайней мере, небезопасной конфигурацией
  • , как безопасно удалить определенные записи, если это целесообразно сделать

Записи:

  1. с mysql.user запись User=webphp AND Host=%
  2. с information_schema.USER_PRIVILEGES запись GRANTEE='webphp'@'%'
  3. с mysql.db запись User="" and host='%'

Записи в моей базе данных

mysql .user

SELECT Host, User FROM mysql.user where Host in ('%', '127.0.0.1', '::1', 'localhost');

+-----------+--------+
| Host      | User   |
+-----------+--------+
| 127.0.0.1 | root   |
| ::1       | root   |
| localhost | root   |
| %         | webphp |  <-- Can i delete this to avoid connections from outside?
| localhost | webphp |
+-----------+--------+

information_schema.USER_PRIVILEGES

SELECT * FROM information_schema.USER_PRIVILEGES where PRIVILEGE_TYPE = 'USAGE';

+----------------------+---------------+----------------+
| GRANTEE              | TABLE_CATALOG | PRIVILEGE_TYPE |
+----------------------+---------------+----------------+
| 'webphp'@'localhost' | def           | USAGE          |
| 'webphp'@'%'         | def           | USAGE          | <-- Can i delete this?
+----------------------+---------------+----------------+

mysql .db

SELECT Host, User, Length(User), Db FROM mysql.db;

+-----------+--------+--------------+---------+
| Host      | User   | Length(User) | Db      |
+-----------+--------+--------------+---------+
| %         |        |            0 | test    |  <-- AFAIK i have no Db named test
| %         |        |            0 | test\_% |  <-- same here - Delete?
| localhost | webphp |            6 | webphp  |
+-----------+--------+--------------+---------+

Из серверной документации MariaDB о mysql .db мне неясно, должна ли запись в mysql.db содержать пустую строку "" в столбец User. Документы information-schema-innodb_sys_datafiles-table не указывают, могу ли я удалить записи здесь.

Вопросы относительно предоставления только обязательных прав / привилегий

Я планирую предоставить эти права

GRANT USAGE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, ALTER, CREATE TEMPORARY TABLES  
ON *webphp.* TO 'webphp'@localhost IDENTIFIED BY 'mySuperSecretPW';

Вышеуказанное должно гарантировать, что user webphp может подключаться только к db webphp если он подключается с того же оборудования

  1. Достаточно ли этих прав? Я что-нибудь пропустил?
  2. Это хорошая идея?

Вопросы для db=test and user =""

  1. Должен ли я удалить записи внутри mysql.db, где поле / столбец User пусто?
  2. Насколько мне известно, у меня нет БД с именем test или test\_%. Могу ли я удалить эти записи?

Вопросы для db=webphp and user ="webphp"

  1. information_schema.USER_PRIVILEGES Насколько я понимаю, GRANTEE = 'webphp'@'%' позволяет пользователю сети php подключаться откуда угодно. Если моя база данных работает на том же оборудовании, могу ли я удалить ее?
  2. mysql.user Могу ли я удалить запись host=% and user=webphp, чтобы избежать ее использования с других серверов?

1 Ответ

1 голос
/ 08 февраля 2020
GRANT USAGE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, ALTER, CREATE TEMPORARY TABLES  
ON *webphp.* TO 'webphp'@localhost IDENTIFIED BY 'mySuperSecretPW';

Достаточно ли этих прав? Я что-нибудь пропустил?

Более точно укажите c в имени базы данных и используйте webphp.*. Не предоставляйте пользователю права delete или alter, если это действительно не нужно. Если вашему приложению нужно что-то удалить, в таблице есть столбец, который помечает что-то для удаления.

Это хорошая идея?

Да.

Вопросы для db = test и user = ""

Удалите пользователей и базы данных, которые не нужны.

information_schema.USER_PRIVILEGES, насколько я понимаю, GRANTEE = 'web php' @ '%' позволяет пользователю сети php подключаться откуда угодно. Если моя база данных работает на том же оборудовании, могу ли я удалить ее?

Да

mysql. Пользователь может удалить запись узла =% и пользователя = web php, чтобы избежать использования с других серверов?

Да

...