@ivasenkoartem

Как защититься от SQL иньекции?

Есть код:
spoiler
<?php 

  // Подключение к БД
  require_once 'connect_db.php'; 

  // Вывод значений с формы
  $name = trim($_POST['name']);
  $surname = trim($_POST['surname']);
  $age = intval($_POST['age']);
  $phone = trim($_POST['phone']);
  $biography = trim($_POST['biography']);
  $registration_code = $_GET['code'];

  // Проверка на ошибки
  $errors = array();
  if ($name == "") {
    $errors[] = "Введите имя!";
  }
  if ($surname == "") {
    $errors[] = "Введите фамилию!";
  }
  if ($age == "") {
    $errors[] = "Введите возраст!";
  }
  if ($phone == "") {
    $errors[] = "Введите телефон";
  }
  if ($biography == "") {
    $errors[] = "Введите информацию о себе";
  }

  // Вывод ошибок
  for ($i=0; $i < count($errors); $i++) { 
    echo $errors[$i]."<br>";
  }

  // Добополнение информации о пользователе
  // Если нет ошибок, то проходит обновление успешно
 if (count($errors) == 0) {
   connectDB();
    global $mysqli;
    $mysqli->query ("UPDATE `users` SET `name`='$name', `surname`='$surname', `age`='$age', `phone`='$phone', `biography`='$biography' WHERE `registration code`='$registration_code'");
  closeDB();
  header('Location: ../login.php');

 } else {
  echo "<hr>";
  echo "<b>Устраните ошибки!</b><br>";
    echo "<a href=\"../data.php?code=".$_GET['id']."\">Повторить попытку</a>";

 }


Как обезопасить его от SQL иньекции без ПДО?
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ответы на вопрос 5
@nozzy
Symfony, Laravel, SQL
Ответ написан
Комментировать
@SadKron
Использовать другие библиотеки, не стандартный mysql connect. Их уже можно найти в интернете
Ответ написан
Комментировать
@klim76
android/java/sql
юзать хранимки?
Ответ написан
Комментировать
@ponaehal
+ осторожнее использовать выражение LIKE
+ осторожнее с динамическим SQL

т.е. следить за теми значениями которые могут принимать переменные из которых вы лепите выражения like или динамический sql
Ответ написан
Комментировать
Avenax
@Avenax
php dev webcom group
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы