мой сайт имеет команду PHP:
mysql_query("SELECT * FROM users WHERE id=" . $_GET["id"]) or die(mysql_error());
Когда я ввожу URL
http://example.com/index.php?id=1;%20UPDATE%20users%20SET%20password=123%20WHERE%20id=1
Я получаю следующую ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET password=abc WHERE id=1' at line 1
Но в phpmyamin запрос выполняется успешно. Что здесь не так? Почему это не выполняется в браузере?
"mysql_query() отправляет уникальный запрос (несколько запросов не поддерживаются)"
mysql_query()
Если вы намерены разрешить MySQL инъекцию таким образом, mysql_query это не понравится. Если нет, mysql_real_escape_string($_GET["id"]);, чтобы предотвратить «инъекцию»
mysql_real_escape_string($_GET["id"]);
mysql_query() не поддерживает несколько запросов в одном вызове (который вы пытаетесь внедрить):
SELECT * FROM users WHERE id=1; UPDATE users SET password=abc WHERE id=1
Отсюда и «синтаксическая ошибка».
Теперь идите защищатьэтот запрос.