xss_clean删除tinymce的格式



在Codeigniter 3.x中,如果在将$data保存到数据库之前使用$data = $this->security->xss_clean($data);,它将删除TINYMCE编辑器的所有格式,并将xss=removed放置如下:

<span xss=removed><strong>1. Joint pain </strong></span>

因此,我无法在输出中看到字体颜色、背景颜色、字体大小的变化。

如果在将$data保存到数据库之前删除$data = $this->security->xss_clean($data);,并且仅实现以下安全措施,则格式化工作正常:

$data = trim($data);
//$data = $this->security->xss_clean($data);
$data = html_escape($data);
$data = strip_tags($data);

现在它在数据库中存储以下内容:

<span style="font-size: 14pt;"><strong>1. Joint pain </strong></span>

我有两个问题:

  1. 以上代码是否足以确保发送到数据库的数据经过充分清理,不会允许任何攻击。我正在使用Codeigniter的活动记录来执行SQL。

  2. 在屏幕上显示输出时,我应该使用xss_clean吗:echo $this->security->xss_clean(htmlspecialchars_decode($data))

请帮忙。

Codeigniter中的xss_clean函数在较新版本中已被删除,因为它不是正确的方法。它试图做得太多,但不是以可靠的方式。它可以替换为转义或过滤输入。这可以通过HTML转义函数或类似HTMLPurifier的库来完成。

HTML转义适用于输入为纯文本,并且您希望将其插入HTML文档中的情况。在这种情况下,您可以在页面上输出数据时对其进行转义。这可能取决于插入位置的上下文(请参阅OWASP XSS预防作弊表(。

如果你的输入是HTML,就像你从一些编辑器那里得到的那样,那么你想要像HTMLPurifier这样的东西。这既可以在将数据保存到数据库之前应用,也可以在显示数据时应用。这将根据允许元素的白名单过滤HTML,因此可以在阻止脚本的同时允许一些格式设置。

相关内容

  • 没有找到相关文章

最新更新