我有一个应用程序需要安全地显示外部 HTML 数据(例如 HTML 编码的电子邮件文本,但不仅如此) - 即,删除 XSS 尝试和其他讨厌的东西。但仍然能够显示 HTML 应有的样子。到目前为止考虑的解决方案并不理想:
- 使用 HTMLPurifier 之类的东西清理 HTML。工作正常,但是一旦电子邮件大小超过 100K,它就会变得非常慢 - 每封电子邮件数十秒。我怀疑任何足够安全的解析器在 PHP 中的速度都会一样慢——有些电子邮件的 HTML 非常糟糕,我见过一些为一页文本生成 150K HTML 的电子邮件。
- 在 iframe 中显示 HTML - 这里的问题是 iframe 需要位于另一个来源才能免受 XSS AFAIK 的影响,这将需要同一应用程序的不同域。设置具有两个域的应用程序需要更多的工作,并且在某些设置中可能非常困难(例如仅提供一个域名的主机)。
还有其他解决方案可以达到这个结果吗?