簡體   English   中英

php htmlspecialchars

[英]php htmlspecialchars

我應該使用哪種類型的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嗎?

顧名思義,當在HTML輸出中輸出字符串時,將調用htmlspecialchars 例如:

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

在其中調用該代碼可確保將引號,尖括號等正確地編碼為其相應的實體&quot; &lt; &amp;

您不應在數據庫數據上使用htmlspecialchars 在輸出時(而不是在存儲時)轉義文本。

我將大部分時間使用htmlentities()

通常在顯示數據時將它們應用於數據。

例如

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

如果在輸出時使用htmlentities,則<和>將轉換為html實體-&lt;。 和&gt;

用htmlspecialchars應該上的任何數據使用的用戶輸入是不斷顯示給您的任何用戶。 如果您甚至沒有將其用於一條信息,那么您就已經對跨站點腳本攻擊敞開了大門

在將信息添加到數據庫或將其保存到某處時,您不會使用它,而是想要為數據庫正確地對其進行轉義。 這樣可以避免SQL注入漏洞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM