加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如果我使用HTMLPurifier,我还需要使用htmlentities吗?

发布时间:2020-12-13 22:02:58 所属栏目:PHP教程 来源:网络整理
导读:我一直在’洒’ htmlentities($user_input,ENT_QUOTES,'UTF-8') 在我的观点中,无处不在,我回应用户有机会在我的应用中输入的数据. 这非常繁琐,我想知道在我的控制器中使用HTMLPurifier是否可以安全地替代在视图中的每个回声中使用htmlentities. 我已经注意到
我一直在’洒’

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

在我的观点中,无处不在,我回应用户有机会在我的应用中输入的数据.

这非常繁琐,我想知道在我的控制器中使用HTMLPurifier是否可以安全地替代在视图中的每个回声中使用htmlentities.

我已经注意到,单独的HTMLPurifier将尝试关闭一个打开的< div>而不是删除它,所以如果一些smartass输入他的名字为Johnny< div>在我看来,它回应了它,它打破了我的整个布局.

但如果相反我只使用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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读