2009-10-15 90 views
1

我應該使用htmlspecialchars與什麼類型的輸入?還是應該始終使用它來清理輸入數據?還是有更好的「數據消毒」功能?這是假設的是,這些值將被存儲在數據庫中php htmlspecialchars

實施例:

$userdata = array(
'username' => $_POST['username'], 
'email' => $_POST['email'], 
'password' => $_POST['password'] 
); 

// register function defined in a class user accepts array as parameter 
// register function hashes password before storage 
$this->user->register($userdata); 

我應該適用的htmlspecialchars這些數據?

回答

1

htmlspecialchars應該用於任何用戶輸入的數據會顯示回您的任何用戶。如果你甚至沒有使用它的信息,你已經打開了自己的Cross Site Scripting攻擊。

將信息添加到數據庫或將其保存在某處時,您不會使用它,那麼您想要正確地將它轉義爲數據庫。這將避免SQL injection漏洞。

1

顧名思義,htmlspecialchars是打算在HTML輸出中輸出字符串時調用。例如:

<input type="text" name="username" value="<?= htmlspecialchars($user->name) ?>" /> 

調用它有確保引號,尖括號,而這種正確與它們對應的實體&quot;&lt;&amp;等編碼

你不應該在數據庫中的數據使用htmlspecialchars 。當你輸出時逃離文本,而不是當你存儲它。

1

大多數時候我會使用htmlentities()

當您顯示數據時,通常將它們應用於數據。

E.g.

你有$str = '<iframe src="http://someurl..." />';

如果使用輸出時,所述<和>被轉換成HTML實體ヶ輛 - & LT;和& gt;