Shadow
Guest
Безопасность MySQL
Сидел вот сейчас, читал мануал... Глава 4. Безопасность. Безопасность баз данных
Меня, естественно заинтересовал вопрос безопасности доступа к MySQL.
Вот код из мануала:
Обычно пользователи щёлкают ссылки 'next', 'prev', где $offset кодируется в URL. Скрипт ожидает, что входящее $offset это 10-ричное число. Однако кто-нибудь может попытаться вломиться, присоединив urlencode()'ированную форму следующей информации к URL:
// в MySQL
0;
UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
FLUSH PRIVILEGES;
Если это произойдёт, то скрипт даст доступ superuser'а к нему…
Попытался я проверить все это на практике, создав условия дыры у себя на сайте. Но меня поджидал облом… Запрос просто не выполнился. Как я понял, mysql_query() не может выполнить сразу более одного запроса. Я это замечал и раньше, но теперь я в некоторой растерянности. С одной стороны мануал утверждает о таком возможном баге, но с другой стороны такая возможность просто напрочь отметается моим опытом…
Что это: глюк моего интерпретатора php или ошибка мануала???
Сидел вот сейчас, читал мануал... Глава 4. Безопасность. Безопасность баз данных
Меня, естественно заинтересовал вопрос безопасности доступа к MySQL.
Вот код из мануала:
PHP:
$offset = argv[0]; // видите, никакой проверки ввода!
$query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
// с PostgreSQL
$result = pg_exec($conn, $query);
// с MySQL
$result = mysql_query($query);
// в MySQL
0;
UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
FLUSH PRIVILEGES;
Если это произойдёт, то скрипт даст доступ superuser'а к нему…
Попытался я проверить все это на практике, создав условия дыры у себя на сайте. Но меня поджидал облом… Запрос просто не выполнился. Как я понял, mysql_query() не может выполнить сразу более одного запроса. Я это замечал и раньше, но теперь я в некоторой растерянности. С одной стороны мануал утверждает о таком возможном баге, но с другой стороны такая возможность просто напрочь отметается моим опытом…
Что это: глюк моего интерпретатора php или ошибка мануала???