我正在使用 Summernote 所见即所得编辑器(如下所示),发现它使用 HTML 标签来格式化文本。
<textarea name="body" id="editor" value="{{old('body')}}" rows="10" required></textarea>
如何保护我的应用程序免受 XSS 攻击?我将输入存储为纯文本,并使用输出:{!! $body !!}
.
是否可以过滤 textarea
对于易受攻击的输入,例如:<script>alert("boom")</script>
最佳答案
默认情况下,Laravel 不提供任何机制来从给定输入中删除某些标签,因此您需要使用第三方包,如 Purifier。 .
安装净化器
如下所示,可以使用 Composer
简单地安装 Purifier .
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>")
Output:
<p>Good</p>
关于laravel - 如何保护所见即所得的编辑器免受 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54493149/