Php 理解HTML净化器

Php 理解HTML净化器,php,codeigniter,security,xss,Php,Codeigniter,Security,Xss,我目前正在使用CodeIgniter。我有4个表单(学生登录、表单登录、创建帐户和请求帐户) 我目前正在使用此功能筛选我在其中一个表单上的输入(创建帐户): 据我所知,HTML净化器只应在用户数据将作为HTML在表格、论坛、博客(等)中回送/输出时使用。我的理解是否正确?我这样问是因为我的学生登录表单将用于将数据输入数据库。然后我的学生队列页面将用于选择。。。从…起那个数据库。因此,这让我感到困惑,因为当我为学生队列创建输出时,数据将存储在数据库中。它不会直接发布 因此,我的思路如下: 验证数

我目前正在使用CodeIgniter。我有4个表单(学生登录、表单登录、创建帐户和请求帐户)

我目前正在使用此功能筛选我在其中一个表单上的输入(创建帐户):

据我所知,HTML净化器只应在用户数据将作为HTML在表格、论坛、博客(等)中回送/输出时使用。我的理解是否正确?我这样问是因为我的学生登录表单将用于将数据输入数据库。然后我的学生队列页面将用于选择。。。从…起那个数据库。因此,这让我感到困惑,因为当我为学生队列创建输出时,数据将存储在数据库中。它不会直接发布

因此,我的思路如下:

  • 验证数据,确保数据符合预期
  • 用xss_clean像我现在一样过滤数据
  • 使用PDO准备的查询将数据插入数据库
  • (现在这一步让我困惑)我应该如何回显我的数据库数据? 我应该在这一步使用HTML净化器吗
对不起,如果这个问题被问了一百万次,我就是找不到我想要的。我没有完全掌握HTML净化器的概念


编辑1:在配置文件中使用全局xss_clean筛选器。

HTML净化器适用于数据类型为HTML的字符串,并且希望限制其中可能出现的HTML类型

然而,这里没有一个字段是HTML——它们都只是字符串。因此,要显示它们,只需转义字符串以在HTML中显示,就像对任何字符串一样

CodeIgniter的最新版本有一个
html\u escape()
函数。在视图中使用它,如下所示:

<p><?=html_escape($mystring)?></p>


如果您使用的是旧版本,请直接使用
htmlspecialchars($mystring,ENT_NOQUOTES,'utf-8')
。您可能应该将其包装在一个单参数函数中。

如果数据包含用户提交的HTML代码-是的,则其中不应包含HTML或脚本。我只允许使用aplha_数字字符。那么你就不需要净化器了。只要字段,确保它们只包含A-Z,0-9。非常感谢。我刚刚从htmlpurifier.org上的一个家伙那里得到了同样的答案,非常感谢。
<p><?=html_escape($mystring)?></p>