【发布时间】:2023-03-18 23:15:01
【问题描述】:
我在我的地方读到,为了防止 XSS 攻击,最佳做法是先在用户输入上执行 stripslashes,然后再执行 htmlspecialchars。但是,在某些情况下这是不可能的,例如当允许用户使用所见即所得编辑器进行一些基本标记时。
PHP 是否为此提供任何方法,允许某些基本标签(b、i、u、a、img、...)的白名单,但会去除它们所有潜在的危险参数,以及转义所有 html除了属于白名单标签和标签参数集的<、> 和" 之外的特殊字符?
或者我应该忘记这样做并切换到不同的方法,例如使用 BBcode 进行带有标记的用户输入?
【问题讨论】:
-
等等,TinyMCE 会自动防御 XSS
-
@bad_boy 编辑器本身是客户端,因此永远无法提供任何合理的保护。
-
选择是按照建议使用 HTMLPurifier 之类的库,或者切换到 markdown 格式,或者自己滚动。
-
我来这里是为了了解如何保护 TinyMCE 免受 XSS 攻击,所以人们告诉 OP TinyMCE 可以防止 XSS 我可以确认被错误告知,因为它没有,至少不是我的版本正在使用。如果 TinyMCE 对此进行保护,A) 并非总是如此,B) 我不想相信用户不会伪造 POST 请求。