2017-05-05 51 views
0

我沒有使用SQLi的經驗,並且正在學習,但我想問這個問題,因爲我正在學習SQL注入攻擊。使用mySQLi保留字和函數 - 安全

我已經使用mySQLi保留字和函數來處理我的查詢並使我的數據庫發揮作用。

在閱讀了關於這些攻擊和如何保護自己之後,我想知道我是否應該使用這個庫,因爲我沒有看到任何人使用它。非我的講師使用它,如果使用它是不好的做法,我可以問爲什麼?

這是我的代碼示例如下。正如你可以看到我使用保留字和功能,如「mysqli_num_rows(),mysqli_free_result()和mysqli_close()。這是圖書館不好的做法,爲什麼?謝謝

<?php 
if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 


# Run the query, store result in a string and store number of rows returned 
$result= mysqli_query($con,"select * from gameRecords") or die("Error: ".mysqli_error($con)); 
//echo $result; 

// Return the number of rows in result set 
$rowcount=mysqli_num_rows($result); 
if($rowcount !=0) 
    { 
     echo("Result set has $rowcount rows.<br>"); 
     /* fetch associative array*/ 
     while ($row = mysqli_fetch_assoc($result)) { 
      ?> 
      <tr><td> 
      <?php 
      echo $row["gameNo"]."</td>"."<td>"; 
      echo $row["oppTeam"]."</td>"."<td>"; 
      echo $row["date"]."</td>"."<td>"; 
      echo $row["location"]."</td>"."<td>"; 
      echo $row["result"]."</td>"."<td>"; 
      echo $row["ko"]."</td>"."<td>"; 
      echo $row["score"]."</td>"."<td>"; 
      echo $row["fhInfo"]."</td>"."<td>"; 
      echo $row["shInfo"]."</td>"."<td>"; 


      ?> 
      </td> 
      </tr> 

      <?php 
     } 
     //free result set 
     mysqli_free_result($result); 
    } 

# Closes the database 
mysqli_close($con); 

?> 
+0

「mysqli保留字」是什麼意思? – Barmar

+0

您應該使用mysqli或PDO。 mysql庫在幾年前不推薦使用,並且已經在PHP 7中完全刪除。 – Barmar

+0

我使用mysqli而不是PDO。我只是想知道是否有消極因素,因爲我沒有看到任何人使用它。 –

回答

1

月1日,您使用的mysqli,也就是正確和安全的(當以安全的方式使用時)不要混淆mysql(不包括'i')已被棄用

你所說的那些'保留'字是函數。使用,你正在以程序的方式使用它,這又是一個味道問題,你如何構建比安全問題更多的東西。與您的代碼一起。就你的查詢而言。

$result= mysqli_query($con,"select * from gameRecords"); 

但如果你在哪裏使用輸入建立你查詢你需要轉向準備好的語句。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

這裏有很多關於預備聲明的文檔。我也在使用mysqli,大多數人認爲你在談論語句時使用的是PDO,所以在尋找答案時要小心,語法相似但不完全相同。

+0

謝謝。我需要準備好我的報告,以供鏈接。 –