Это мой первый вопрос в Stackoverflow, так что извините, если что-то не так.
Я начал изучать внутреннюю разработку несколько дней назад.
В настоящее время я работаю над приложением с возможностями входа в систему..
Из того, что я узнал до сих пор, я должен взять имя пользователя и пароль, а затем проверить, есть ли совпадение в базе данных, и если оно есть, я зарегистрирую этого человека.
Однако, чтобы защитить мое веб-приложение от потенциальных SQL-инъекций, мне нужно использовать подготовленные операторы или по крайней мере экранирующие строки при построении запросов.
Если я получаю пользовательский ввод, тогда я использую цикл for, чтобы получитьимя пользователя и пароль каждого пользователя и сравните их с пользовательским вводом, который пытается войти.
Казалось бы, это решает опасность внедрения SQL-кода, поскольку на сервер ничего не отправляется, только по сравнению с данными внутри сервера.
Этот подход намного медленнее или он открывает другие уязвимости?
Какой метод следует использовать, чтобы быть лучше и безопаснее?э?
Это код PHP, который я использую:
$r = "SELECT * FROM users";
$result = mysqli_query($con, $r);
$rows = mysqli_num_rows($result);
for ($i = 1; $i <= $rows; $i++){
$checkQ = "SELECT * FROM users WHERE id = $i";
$r = mysqli_query($con, $checkQ);
$result = mysqli_fetch_assoc($r);
if ((isset($_POST["username"])) && (isset($_POST["password"]))) {
if (
($result["username"] == $_POST["username"])
&& ($result["password"]==$_POST["password"])
) {
$_SESSION["username"] = $_POST["username"];
mysqli_close($con);
header("Location: home.php");
}
}
}