Пытаюсь защитить свои SQL-запросы от атак с использованием инъекций и безуспешно - PullRequest
0 голосов
/ 11 марта 2019

Я прочитал несколько постов здесь и следил за запросами дословно (за исключением имен моих переменных), и я не могу заставить мой код работать на веб-сайте, над которым я работаю, без ошибок. Все, что у меня есть, это форма, куда пользователь может загрузить изображение.

Мой оригинальный код, который был уязвим, но работал:

<?php
  $uploadDir = 'images/';


  if(isset($_POST['upload']))
  {
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];
    $memberID = $_POST['member-id'];
    $imgTitle = $_POST['img-title'];
    $catID = $_POST['catID'];

    $filePath = $uploadDir . $fileName;

    $result = move_uploaded_file($tmpName, $filePath);

    if (!$result) {
      echo "Error uploading file";
      exit;
     }

    echo "<br>Files uploaded<br>";

    if(mysqli_connect_errno())
     {
       printf("Connect failed: %s\n", mysqli_connect_error());
       exit();
     }

     if(!get_magic_quotes_gpc())
        {
         $fileName = addslashes($fileName);
         $filePath = addslashes($filePath);
        } 


       $query = "INSERT INTO `tblImage` (`fldImageID`, `fldMemberID`, `fldCatID`, `fldFilePath`, `fldName`) VALUES (NULL, '$memberID', '$catID', '$filePath', '$imgTitle')";

        $query = "SELECT `fldImageID` FROM `tblImage` ORDER BY `fldImageID` DESC LIMIT 1";


        $result = $conn->query($query) or die ("error");

 }

?>

, а затем ниже, где я попытался выполнить подготовленные операторы без удачи, пожалуйста, кто-то может указать, где моя ошибка, я вставил только приведенный ниже код, который переписывает вышеуказанный код, где начинается $ query ....

    $stmt = $conn->prepare = ("INSERT INTO tblImage (fldImageID, fldMemberID, fldCatID, fldFilePath, fldName) VALUES (NULL, ?, ?, ?, ?)");

    $stmt->bind_param($stmt, "ssss", $memberID, $catID, $filePath, $imgTitle); 
    mysqli_stmt_execute($stmt);
    $stmt->execute();
    $result = mysqli_stmt_get_result($stmt) or die ("error");

Сообщение об ошибке на веб-странице: error msg

1 Ответ

1 голос
/ 11 марта 2019

У вас есть дополнительное значение:

$stmt = $conn->prepare = ("INSERT INTO tblImage (fldImageID, fldMemberID, fldCatID, fldFilePath, fldName) VALUES (NULL, ?, ?, ?, ?)");

просто удалите этот оператор:

$stmt = $conn->prepare("INSERT INTO tblImage (fldImageID, fldMemberID, fldCatID, fldFilePath, fldName) VALUES (NULL, ?, ?, ?, ?)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...