2012-12-12 172 views
0

所以我知道你可以在php中使用$words = htmlspecialchars($_POST['name']); 來轉義特殊字符並防止一些html注入。防止html注入

但我實際上遇到麻煩實施它到我的PHP代碼。我在閱讀時必須先使用它,然後才能向網站的觀衆展示您正在展示的任何內容,但我已經失去了如何執行此操作的信息。我有點用PHP的初學者。

所以我能夠做的SQL注入部分,但這裏是我卡在上面的代碼的一部分,如上所述。

我試圖阻止HTML注入的標題博客和標籤

$result= mysql_query("SELECT * FROM Bpost"); 

echo '<div class = "blog" align = "center">'; 
    while($row = mysql_fetch_array($result)) 
     { 

     echo "<div class = 'tname'>"; 
     echo $row['title']; 
     echo '</div>'; 

     echo '<div class = "bpost">'; 
     echo $row['blog']; 
     echo '</div>'; 

     echo '<div class = "tag">'; 
     echo $row['tags']; 
     echo '</div>'; 
     echo '</br>'; 

     } 
echo '</div>'; 

如果你從我的其他的東西需要的示例代碼讓我知道。對我來說,這似乎是夠了。

+3

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Neal

+0

@Neal你應該寫一個bot來做到這一點。 – ceejayoz

+2

@ceejayoz誰說我沒有? :-P – Neal

回答

2

只需將echo $row['title'];更改爲echo htmlspecialchars($row['title']);(並對所有其他用戶生成的數據重複),然後進行設置。

+0

謝謝。我可以相信這其實很簡單。 – user1776221

+1

重申:在迴應不能保證安全的字符串時總是調用'htmlspecialchars'。如果你的字符串可以包含HTML,那是另一回事了,這是一個更復雜的案例 –

+0

是的,我知道它並不能防範任何事情。這只是我想添加到我的腳本類中的額外功勞項目中的一部分。我們簡單地談到了sql和html注入,我想我可能會把它包含在這個額外的信譽中。項目(儘管它不是必需的),只是爲了增加額外收入,並從我的老師那裏得到額外的信貸。 – user1776221