0
我試着用搜索引擎的幫助,但它不是那麼容易,因爲你會想到。如果有人可以告訴我如何保護SQL,甚至可以給我一個好網站的鏈接,以學習如何自己做。
如果你甚至可以善待解決它,並告訴我什麼是錯的,我一定會記下來,並確保我的其他代碼。
<?php
$post = htmlspecialchars($_GET["id"]);
$results = mysql_query("SELECT * FROM tool WHERE id = $post");
$authorr = $_SESSION['Username'];
while($row = mysql_fetch_array($results)){
$capsd = ucfirst($author);
$title= $row['title'];
$details= $row['details'];
$author= $row['author'];
$date= $row['date'];
$img= $row['featuredimage'];
$id= $row['id'];
echo "<table border=1><tr><td width=100px>
<b><u><center>";
echo $title;
echo "</center></u></td> <td width=100px><center>";
echo $date;
echo "</center></td> <td width=100px><b><center>";
echo ucfirst($author);
echo "</center></b></td>";
if (in_array($authorr, $allowedposters)) {
echo "<center><td width=20px><a href=edit.php?id=";
echo $id;
echo "><b>Edit</b></a></center></td>";
}
echo "</tr></table>";
echo "<img src=http://www.removed.com/news/";
echo $img;
echo " height=300 width=400> <br><br>";
echo $details;
}
?>
在這個特定情況下,唯一的注入風險是將'$ post'放到SQL查詢中。由於它是整數值,因此可以像這樣得到它:'$ post = intval($ _ GET [「id」]);'。 'intval'保證返回有效整數(如果傳入的字符串中沒有任何整數,則返回0)。它不能包含任何SQL注入,因此它很安全。它不能包含任何HTML代碼,所以'htmlspecialchars'調用變得沒有必要。請注意,如果可以存儲由用戶輸入的某些HTML代碼,則必須使用'htmlspecialchars'處理'$ title','$ date'等值。否則就是XSS風險。 –