HTML净化器能为安全的PHP编程做些什么;t


What does HTML Purifier do that secure PHP programming can't?

我正在研究PHP安全最佳实践,特别是HTML净化器库。

我喜欢使用第三方库来帮助加强我的网站安全的想法,但我对一些事情感到困惑。。。

  1. 首先,一个一般性问题。。。HTML净化器做了什么,而实践安全PHP编程却做不到?

  2. 如果我使用的是HTML净化器,这是否意味着我可以跳过常见的安全措施,比如使用PHP函数过滤输入和转义输出?

  3. 这个问题的一条回复评论似乎表明,HTML净化器只适用于允许HTML标记的元素,如所见即所得编辑器。这是正确的吗?

  4. 有人注意到使用HTML净化器的性能滞后吗?这篇文章让人觉得性能影响是值得考虑的。

  5. 有没有关于将HTML净化器与非框架PHP应用程序集成的最新教程?我发现的所有东西要么是旧的,要么是特定于框架的。

在问这个问题之前,只是为了确认我已经完成了家庭作业。。。

  • 这个问题与我的基本相同,但唯一的回答似乎只是列出了另一个提问者忘记提及的最佳实践

  • 这个"丰富"的问题是关于HTML净化器和HTML5的一个极好的资源,但前提是具备基础知识

  • HTML净化器网站上的这个比较页面更多的是与其他过滤器的比较

接受用户的任何输入时有两个极端:

  1. 不加区分地将所有内容转义为HTML实体,因此用户可以不注入任何内容。这是100%安全的,但用户不能自由添加任何HTML,例如粗体文本等
  2. 在收到用户的内容时输出。这允许用户<b>粗体文本<b>,但也可以有意或无意地以用户想要的任何其他形式注入脚本或扰乱HTML

HTML净化器允许一个中间立场:允许用户注入一些HTML,但不能注入恶意HTML。当然,这是一件很混乱的尝试,但HTML Purifier据称是少数几个(如果不是唯一的)库之一。

这是它唯一应该用来的东西。不要放弃其他安全措施。事实上,我完全避免了整个问题,因为我只允许用户使用受控的标记语言来设计输入的样式,比如Markdown(Stackoverflow使用的)。