如何保护所见即所得的编辑器免受 XSS 攻击?
How to protect a WYSIWYG editor from XSS attacks?
我正在使用 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>
我正在使用 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>