2009-10-15 46 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;