如何保护WYSIWYG编辑器免受XSS攻击?

时间:2019-02-02 12:37:02

标签: laravel laravel-5 textarea xss summernote

我正在使用Summernote所见即所得编辑器(如下所示),发现它使用HTML标记来格式化文本。

<textarea name="body" id="editor" value="{{old('body')}}" rows="10" required></textarea>

如何保护我的应用程序免受XSS攻击?我将输入存储为纯文本,并使用{!! $body !!}输出。

是否可以过滤textarea以获得易受攻击的输入,例如:<script>alert("boom")</script>

1 个答案:

答案 0 :(得分:2)

默认情况下,Laravel不提供任何机制来从给定的输入删除某些标记,从而需要使用第三方软件包如Purifier

安装净化器

如下所示,净化器可以简单地使用安装Composer

composer require mews/purifier

配置

要自定义Purifier的默认设置,请发布配置文件(config/purifier.php)。

php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"

现在,导航到config/purifier.php,并调整HTML.Allowed根据需要条目。请注意,此条目中未列出的所有标签都将通过clean()方法删除。

的配置选项一个详尽的参考,可以发现here


示例

clean("<p>Good</p> <script>alert('Bad')</script>")
  

输出:<p>Good</p>