У меня есть приложение, работающее на php / mysql, и оно недавно вступило в производственную стадию, поэтому мне нужно защитить всю инфраструктуру, начиная с некоторой защиты от внедрения SQL.
Одна из вещей, которые я делаю, - это преобразование всего ввода от пользователей в подготовленное утверждение вместо прямого запроса.
Это работало отлично, пока я не начал работать на странице входа.
Следующий код (только запрос MySQL)
- (НЕОБХОДИМО), но функционирующий код, который я использую сегодня
- КОД, чтобы заменить его, который не работает.
В этом примере user_list будет моей таблицей в базе данных, а usr, pswHash,
поля для проверки входа в систему. id будет идентификатором строки с автоинкрементным увеличением.
1)
$sql_query = "SELECT * FROM user_list WHERE usr = $user AND pswHash = $passHash";
2)
$stmt = $mysqli->prepare("SELECT * FROM user_list WHERE usr=? AND pswHash=?");
$stmt->bind_param('ss', $user, $passHash);
Второй фрагмент кода не работает, так как результат запроса в любом случае будет нулевым, с правильной или неправильной комбинацией usr / pass.
Если этого недостаточно, я могу опубликовать целые фрагменты, но я думаю, что эта проблема как-то связана с запросом SQL.
Спасибо за вашу помощь