我正在使用Summernote所见即所得编辑器(如下所示),发现它使用HTML标记来格式化文本。
<textarea name="body" id="editor" value="{{old('body')}}" rows="10" required></textarea>
如何保护我的应用程序免受XSS攻击?我将输入存储为纯文本,并使用{!! $body !!}
输出。
是否可以过滤textarea
以获得易受攻击的输入,例如:<script>alert("boom")</script>
答案 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>