【问题标题】:How to protect a WYSIWYG editor from XSS attacks?如何保护所见即所得编辑器免受 XSS 攻击?
【发布时间】:2019-06-26 20:04:28
【问题描述】:

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

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

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

是否可以将textarea 过滤为易受攻击的输入,例如:&lt;script&gt;alert("boom")&lt;/script&gt;

【问题讨论】:

    标签: laravel laravel-5 textarea xss summernote


    【解决方案1】:

    默认情况下,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>")
    

    输出:&lt;p&gt;Good&lt;/p&gt;

    【讨论】:

    • 我也用净化器。设置它有点麻烦,但一旦完成,所见即所得的上传就会受到保护,免受 XSS 攻击和所有你不想要的贡献者上传的东西。 @pvaitonis 可能需要尝试一下它的可能性。
    • 我没有找到任何示例或文档,如何允许使用一些标签。
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多