Помогите найти недостатки безопасности на этой странице MySQL?

Я пытаюсь найти недостатки безопасности на странице MySQL. Это задание для класса, изучающего SQL. Через текстовое поле им будет предоставлен доступ к базе данных для отправки запросов и проверки правильности наборов данных. Я хочу выяснить, могут ли они сделать что-нибудь злое.

Это результат SHOW GRANTS запрос:

Grants for user@localhost
GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 'the password'
GRANT SELECT ON `server\_dir`.* TO 'user'@'localhost'
GRANT SELECT ON `server\_dir\_ans`.* TO 'user'@'localhost'

Может кто-нибудь объяснить, что это GRANT заявления значит? Что такое *.* а также GRANT USAGE? Что еще я могу сделать с этим сайтом, чтобы сломать его?

Сам сайт написан на PHP.

В ответ на The Rook, когда я выполню:

UPDATE mysql.user set Password = password("hacked");
FLUSH PRIVILEGES;

Я вернусь:

Error Number: 1142. UPDATE command denied to user 'user'@'localhost' for table 'user'
Error Number: 1227. Access denied; you need the RELOAD privilege for this operation

Как я и думал, похоже, что пользователю не хватает разрешений, необходимых для этого. Или я что-то недопонимаю?

1 ответ

*.* означает все таблицы во всех базах данных.

Недостатки в безопасности произойдут больше в php, чем в msyql, см. Эту статью в Википедии для общих проблем: SQL-инъекция.

GRANT USAGE означает отсутствие привилегий.

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