gpt4 book ai didi

php - 如果我正在使用 HTMLPurifier,我还需要使用 htmlentities 吗?

转载 作者:可可西里 更新时间:2023-11-01 00:01:03 25 4
gpt4 key购买 nike

我一直在'洒水'

htmlentities($user_input, ENT_QUOTES, 'UTF-8')

在我的整个 View 中,我到处回显用户有机会在我的应用中输入的数据。

这非常乏味,我想知道在我的 Controller 中使用 HTMLPurifier 是否可以安全地替代使用 htmlentities在每个echo在 View 上。

例如,我注意到 HTMLPurifier 会单独尝试关闭一个打开的 <div>而不是删除它,所以如果一些聪明人把他的名字输入为 Johnny<div>和我echo在我看来,它破坏了我的整个布局。

但如果我改用 htmlentities我一个人得到

Johnny<div>

并且我的布局被保留。

所以我想知道这是否是 HTMLPurifier 配置的问题,或者最好的做法是将它与 htmlentities 一起使用.

我知道 HTMLPurifier 具有其他功能,符合要求和有效的 HTML,但我主要担心 XSS。

你怎么看?

最佳答案

如果您担心 XSS,请使用 htmlspecialchars (没有理由为此使用成熟的 htmlentities)而且你是黄金:

echo htmlspecialchars($user_input);

HTMLPurifier 仅在您希望允许一些 HTML 功能同时仍防止 XSS 时才有意义。但与任何其他代码一样,它有可能在某些时候无法像宣传的那样工作。就个人而言,我不会去那里。

更新:

是的,htmlspecialchars 确实支持额外的标志(包括 ENT_QUOTES)。但是,ENT_QUOTES 在以下情况下需要:

  • 您正在输出 HTML 属性的值
  • 您已将值括在引号中

例如,您不需要在这里需要ENT_QUOTES:

<p><?php echo htmlspecialchars($input); ?></p>

或在这里:

<p id="<?php echo htmlspecialchars($input); ?>"></p>

在这里需要它:

<p id='<?php echo htmlspecialchars($input, ENT_QUOTES); ?>'></p>

关于php - 如果我正在使用 HTMLPurifier,我还需要使用 htmlentities 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8368714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com