SQL-инъекция сообщается в скрипте, и я не могу найти его

0

Мне сказали, что в PHP-скрипте есть уязвимость SQL-инъекции, которая соответствует "login" и "pass" из БД. Изменение: Удаленный код для конфиденциальности.

  • 1
    Да, вы уязвимы (или вы не показываете код, который делает вас безопасным)
  • 4
    $login = '; DELETE * FROM users
Теги:
sql-injection

2 ответа

3

Я предполагаю, что введенное пользователем значение вводится в $ login. Если $ login не дезинфицирован, и пользователь может установить его, тогда он может быть установлен на

' or '1'='1

Что бы вернуть все в таблице из-за синтаксиса SQL. Обратите внимание, что эта конкретная инъекция не делает многого, потому что ваш код просто соответствует паролю с первой возвращенной записью, но по характеру инъекции все остальные SQL-команды, такие как DROP или DELETE, все равно будут выполняться и все равно будут делать такие вещи, как удаление каждого записать из таблицы, вставить произвольную запись и так далее.

Чтобы избежать инъекций SQL, используйте подготовленные инструкции или используйте белый список разрешенных входных символов с поддержкой серверов, который возможен только в некоторых контекстах. См.: http://php.net/manual/en/pdo.prepared-statements.php

3

Если вы не делаете никакого лечения и делаете что-то вроде $login = $_POST['login'] то да, вы уязвимы для SQL-инъекции.

Не то, чтобы кто-то мог войти без пароля, что важно, а скорее, чтобы кто-то мог выполнить любые запрошенные запросы. Например, если это значение отправлено: " admin); DROP table; -- "вы потеряли бы свою table.

Посмотрите на этот вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню