我应该将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应用于这些数据吗?
发布于 2009-10-15 05:11:37
应该在用户输入的任何数据上使用htmlspecialchars,这些数据曾经显示给您的任何用户。如果您不使用它来获取一条信息,那么您已经向Cross Site Scripting攻击敞开了大门。
在向数据库添加信息或将其保存到某个位置时,您不会使用它,然后您会希望为您的数据库正确地转义它。这将避免SQL injection漏洞。
发布于 2009-10-15 05:09:07
顾名思义,htmlspecialchars是在HTML输出中输出字符串时调用的。例如:
<input type="text" name="username" value="<?= htmlspecialchars($user->name) ?>" />在那里调用它可以确保引号、尖括号等用其对应的实体"、<、&等正确编码。
您不应该对数据库数据使用htmlspecialchars。在输出文本时对文本进行转义,而不是在存储文本时进行转义。
发布于 2009-10-15 05:09:46
我大部分时间都会使用htmlentities()。
通常在显示数据时将它们应用于数据。
例如。
你有$str = '<iframe src="http://someurl..." />';
如果在输出时使用htmlentities,<和>将转换为html实体-<和>
https://stackoverflow.com/questions/1570365
复制相似问题