Php 在Laravel中,如何让人们在不受XSS攻击的情况下显示HTML?

Php 在Laravel中,如何让人们在不受XSS攻击的情况下显示HTML?,php,xss,laravel-5,Php,Xss,Laravel 5,我在网上读到,您应该总是使用Laravel5中的{{…}}来转义用户提交给数据库的数据。然而,我有一个网站,我的会员使用TinyMCE。我正在TinyMCE中过滤脚本和PHP标记,但我想显示用HTML格式化的文本 所以我使用了{!!!!}Blade标签。允许人们输入HTML的论坛和其他网站如何防止XSS攻击?我的网站中是否需要使用任何技术来降低XSS攻击成功的几率?请确保至少去掉所有脚本标记并删除其他元素的处理程序。关键是确保不允许JS运行。另一个选项是从另一个子域提供html,并将其作为ifr

我在网上读到,您应该总是使用Laravel5中的
{{…}}
来转义用户提交给数据库的数据。然而,我有一个网站,我的会员使用TinyMCE。我正在TinyMCE中过滤脚本和PHP标记,但我想显示用HTML格式化的文本


所以我使用了
{!!!!}
Blade标签。允许人们输入HTML的论坛和其他网站如何防止XSS攻击?我的网站中是否需要使用任何技术来降低XSS攻击成功的几率?

请确保至少去掉所有脚本标记并删除其他元素的处理程序。关键是确保不允许JS运行。另一个选项是从另一个子域提供html,并将其作为iframe加载,并设置沙盒属性

还有一个选择是,使用诸如降价之类的东西,而不是让它们以HTML格式提交


也可以剥离任何URL。

关键是要么将用户输入的内容列入白名单,要么使用类似的库对其进行过滤。 有关可用html过滤库的简短列表和比较,您可以查看html净化器的功能。 你可能还想读书


不过,无论你做什么,都不要试图编写自己的解决方案,试图“提取真正需要的方法”。重新发明轮子总是浪费时间,但在这种情况下,它可能会带来你无法预见的风险。

降价本身并不能充分防止XSS:-它仍然需要过滤。@halfer完全同意。扩展了这种方法,尽管我的方法回答了允许脚本的位置的要求。如果没有,只需从沙盒属性中删除
allow scripts
。而不是转义,您必须筛选:。你必须在这里使用一个好的库-人们尝试编写自己的“轻量级”库是很常见的,但从sec的角度来看,这通常是一个坏主意。请参阅以获取一些一般提示(但不是特定于Laravel)。