首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php htmlspecialchars

php htmlspecialchars
EN

Stack Overflow用户
提问于 2009-10-15 05:03:52
回答 3查看 702关注 0票数 1

我应该将htmlspecialchars与什么类型的输入一起使用?或者我应该一直使用它来清理输入数据?或者有没有更好的“数据清理”功能?也就是说,假设这些值将存储在数据库中

示例:

代码语言:javascript
复制
$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应用于这些数据吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-15 05:11:37

应该在用户输入的任何数据上使用htmlspecialchars,这些数据曾经显示给您的任何用户。如果您不使用它来获取一条信息,那么您已经向Cross Site Scripting攻击敞开了大门。

在向数据库添加信息或将其保存到某个位置时,您不会使用它,然后您会希望为您的数据库正确地转义它。这将避免SQL injection漏洞。

票数 1
EN

Stack Overflow用户

发布于 2009-10-15 05:09:07

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

代码语言:javascript
复制
<input type="text" name="username" value="<?= htmlspecialchars($user->name) ?>" />

在那里调用它可以确保引号、尖括号等用其对应的实体&quot;&lt;&amp;等正确编码。

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

票数 1
EN

Stack Overflow用户

发布于 2009-10-15 05:09:46

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

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

例如。

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

如果在输出时使用htmlentities,<和>将转换为html实体-<和>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1570365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档