laravel - 如何保护所见即所得的编辑器免受 XSS 攻击?

标签 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>

最佳答案

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

相关文章:

php - Laravel - 未签名且可为空

user-interface - 如何使用 JavaFX 中可见的行号实现 TextArea?

php - 如何在 Laravel 5.2 中设置至少需要填写两个字段

mysql - 从数据库 Laravel 中删除重复条目

php - Laravel:选择数据库错误 undefined index 或尝试获取非对象的属性

php - 如何在 laravel 的服务提供者中检索 session 数据?

javascript - 如何从选项框、textarea 更改为 ltr-rtl 以及从右向左书写?

ios - 点击元素时,Webkit 会遮挡 textarea

Laravel 查询构建器不绑定(bind)值

php - dump 或 dd laravel 在结果前添加字符时出错