php htmlspecialchars

时间:2009-10-15 05:03:52

标签: 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应用于这些数据吗?

3 个答案:

答案 0 :(得分:1)

顾名思义,当您在HTML输出中输出字符串时,将调用htmlspecialchars。例如:

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

在那里调用它可以确保引号,尖括号等使用相应的实体&quot;&lt;&amp;等进行正确编码。

您不应该在数据库数据上使用htmlspecialchars。输出文本时转义文本,而不是存储时。

答案 1 :(得分:1)

我大部分时间都会使用htmlentities()

您通常在显示数据时将它们应用于数据。

E.g。

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

如果在输出时使用htmlentities,则&lt;和&gt;转换为html实体 - &amp; lt;和&amp; gt;

答案 2 :(得分:1)

htmlspecialchars应该用于用户输入的任何数据,这些数据会显示回任何用户。如果您不使用它来获取1条信息,那么您已经开启了Cross Site Scripting攻击。

在向数据库添加信息或将其保存到某个地方时,您不会使用它,那么您需要为数据库正确地转义它。这样可以避免SQL injection漏洞。