Пытаюсь найти решение этой SQL-инъекции в PHP [дубликат] ⇐ Php
-
Anonymous
Пытаюсь найти решение этой SQL-инъекции в PHP [дубликат]
здесь новичок,
Я изучаю, как работает SQL-инъекция, и пытаюсь найти способ полностью предотвратить этот SQLi.
Я ковырялся в этом уже несколько часов и буду признателен за отзывы. вот уязвимый код:
публичная функция findUser($db, $email) { $dbh = $db->getDbh(); $stmt = $dbh->prepare("выберите * из USER, где EMAIL=?"); $stmt->bindParam(1, $email); $stmt->выполнить(); вернуть $stmt->fetch(); } публичная функция loginUser($db, $email, $password) { return $db->findOne("выбрать * из USER" . "где EMAIL='$email' и PASSWORD=md5('$password')"); } Я пытался добавить подготовленный оператор таким образом, но он все равно не работает.
публичная функция findUser($db, $email, $password) { $dbh = $db->getDbh(); $stmt = $dbh->prepare("выберите * из ПОЛЬЗОВАТЕЛЯ, где EMAIL=? и ПАРОЛЬ=md5(?)"); $stmt->bindParam(1, $email); $stmt->bindParam(2, $password); $stmt->выполнить(); вернуть $stmt->fetch(); } публичная функция loginUser($db, $email, $password) { return $db->findOne("выбрать * из USER" . "где EMAIL='$email' и PASSWORD='$password'"); } публичная функция findOne($query) { $this->app->log($query); $rows = $this->findAll($query); return count($rows) > 0? $rows[0]: ноль; } Я пытался найти в Google способы предотвратить это, но застрял
здесь новичок,
Я изучаю, как работает SQL-инъекция, и пытаюсь найти способ полностью предотвратить этот SQLi.
Я ковырялся в этом уже несколько часов и буду признателен за отзывы. вот уязвимый код:
публичная функция findUser($db, $email) { $dbh = $db->getDbh(); $stmt = $dbh->prepare("выберите * из USER, где EMAIL=?"); $stmt->bindParam(1, $email); $stmt->выполнить(); вернуть $stmt->fetch(); } публичная функция loginUser($db, $email, $password) { return $db->findOne("выбрать * из USER" . "где EMAIL='$email' и PASSWORD=md5('$password')"); } Я пытался добавить подготовленный оператор таким образом, но он все равно не работает.
публичная функция findUser($db, $email, $password) { $dbh = $db->getDbh(); $stmt = $dbh->prepare("выберите * из ПОЛЬЗОВАТЕЛЯ, где EMAIL=? и ПАРОЛЬ=md5(?)"); $stmt->bindParam(1, $email); $stmt->bindParam(2, $password); $stmt->выполнить(); вернуть $stmt->fetch(); } публичная функция loginUser($db, $email, $password) { return $db->findOne("выбрать * из USER" . "где EMAIL='$email' и PASSWORD='$password'"); } публичная функция findOne($query) { $this->app->log($query); $rows = $this->findAll($query); return count($rows) > 0? $rows[0]: ноль; } Я пытался найти в Google способы предотвратить это, но застрял
Мобильная версия