HTML Purifier的安全PHP编程不能做什么?

can*_*era 20 php security htmlpurifier

我正在研究PHP安全最佳实践,特别是HTML Purifier库.

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

  1. 首先,一个普遍的问题...... HTML Purifier的做法是什么,实践安全的PHP编程不能?

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

  3. 这个问题的回复评论之一似乎表明只有允许HTML标签的元素(例如WYSIWYG编辑器)才需要HTML Purifier.它是否正确?

  4. 有没有人注意到使用HTML Purifier的性能滞后?本文使性能影响值得考虑.

  5. 是否有关于将HTML Purifier与非框架PHP应用程序集成的最新教程?我发现的一切都是旧的特定于框架的.

只是为了确认我已经完成了我的作业才问这个......

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

  • 这个"丰富"的问题是关于HTML Purifier和HTML5的一个很好的资源,但它假设了基础知识

  • HTML Purifier网站上的这个比较页面更多地与其他过滤器进行比较

dec*_*eze 24

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

  1. 不加思索地将所有内容转义为HTML实体,因此用户无需注入任何内容.这是100%安全的,但允许用户无权添加任何 HTML,例如用于粗体文本等.
  2. 输出用户收到的内容.这允许用户<b> 粗体文本 </ b>,但也可以有意或无意地以用户期望的任何其他形式注入脚本或弄乱HTML.

HTML Purifier允许一个中间立场:允许用户注入一些 HTML,但不是恶意 HTML.当然,这是一个混乱的事情,但HTML Purifier据称是为数不多的几个库之一,如果不是唯一的,那就是正确的.

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

  • 是的,这就是它的作用.这也是在其网站IMO上明确表达的:`HTML Purifier是一个用PHP编写的符合标准的HTML过滤器库.HTML Purifier不仅会删除所有恶意代码(更好地称为XSS),而且需要经过全面审核,安全且宽松的白名单,...`:-P (2认同)