Помогите найти недостатки безопасности на этой странице 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
означает отсутствие привилегий.