Мне сказали, что в PHP-скрипте есть уязвимость SQL-инъекции, которая соответствует "login" и "pass" из БД. Изменение: Удаленный код для конфиденциальности.
Я предполагаю, что введенное пользователем значение вводится в $ login. Если $ login не дезинфицирован, и пользователь может установить его, тогда он может быть установлен на
' or '1'='1
Что бы вернуть все в таблице из-за синтаксиса SQL. Обратите внимание, что эта конкретная инъекция не делает многого, потому что ваш код просто соответствует паролю с первой возвращенной записью, но по характеру инъекции все остальные SQL-команды, такие как DROP или DELETE, все равно будут выполняться и все равно будут делать такие вещи, как удаление каждого записать из таблицы, вставить произвольную запись и так далее.
Чтобы избежать инъекций SQL, используйте подготовленные инструкции или используйте белый список разрешенных входных символов с поддержкой серверов, который возможен только в некоторых контекстах. См.: http://php.net/manual/en/pdo.prepared-statements.php
Если вы не делаете никакого лечения и делаете что-то вроде $login = $_POST['login']
то да, вы уязвимы для SQL-инъекции.
Не то, чтобы кто-то мог войти без пароля, что важно, а скорее, чтобы кто-то мог выполнить любые запрошенные запросы. Например, если это значение отправлено: " admin); DROP table; --
"вы потеряли бы свою table
.
Посмотрите на этот вопрос.
$login = '; DELETE * FROM users