Нашел вот такую проверку с SQL инъекциeй на PHP в одном из проектов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php // Открытие соединения с базой данных $conn = mysqli_connect("localhost", "username", "password", "myDB"); // Получение данных из формы $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; // Проверка наличия данных if ($name && $email && $message) { // Вставка данных в таблицу "messages" $sql = "INSERT INTO messages (name, email, message) VALUES ('$name', '$email', '$message')"; mysqli_query($conn, $sql); } else { echo "Введите все данные"; } // Закрытие соединения с базой данных mysqli_close($conn); ?> |
Нашел в одном из проекте вот такой SQL запрос кросс-джойн двух таблиц без явного указания оператора JOIN
1 2 3 4 |
SELECT * FROM orders, customers WHERE orders.customer_id = customers.customer_id AND customers.first_name = 'John' |
Этот запрос выполняет кросс-джойн двух таблиц без явного указания оператора JOIN, что может привести к неожиданным результатам. Кроме того, он не использует оператор WHERE для фильтрации строк, что означает, что он возвращает все строки, удовлетворяющие условию соединения. Это может привести к большому объему данных, из-за которых запрос будет выполняться медленно. Наконец, условие фильтрации для идентификации клиента по имени не учитывает возможность наличия нескольких клиентов с одинаковыми именами в таблице customers.
Недавно работал с одним проектом и наткнулся на такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $con = mysql_connect("localhost", "username", "password"); mysql_select_db("my_database", $con); $qry = "SELECT * FROM user WHERE id = '$id'"; $result = mysql_query($qry); while ($row = mysql_fetch_array($result)) { $f = $row['field1']; $g = $row['field2']; $h = $row['field3']; } mysql_close($con); |
Переменные названия просто ужас, долго пытался понять что за field1, field2, field3. Ощущение что стро по документации или учебнику создавали проект 😂
SQL injection в PHP реальный пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$title=$_POST['title']; $genre=$_POST['genre']; $actor=$_POST['actor']; mysqli_query($connect,"INSERT INTO movies(title,genre,actor) VALUES('$title','$genre','$actor')"); if(mysqli_affected_rows($connect) > 0){ echo "<p>Movie Added</p>"; echo "<a href='searchdisplay.php'>Search for movies!</a>"; } else { echo "Movie NOT Added<br />"; echo mysqli_error ($connect); } |