繁体   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