如何保护我的laravel应用程序免受跨站点脚本攻击



我读了一篇关于跨站点脚本的文章,想知道我的应用程序是否容易受到这些类型操作的攻击。

我的应用程序中有一些模块需要详细描述。所以我使用summernote编辑器。在前面,为了正确显示文本,我必须使用{!!!}。在我的视图中使用它们来显示未扫描的数据有危险吗?

我的应用程序中有一些模块需要详细描述。所以我使用summernote编辑器。在前面,为了正确显示文本,我必须使用{!!!}。在我的视图中使用它们来显示未扫描的数据有危险吗?

是的。永远不要相信用户。永远不要依赖客户端逃逸。您需要在服务器端对此进行转义。

我使用的是Laravel Purifier,你可以用它来转义所有html标签,也可以定义哪些标签是允许的(例如,在文本字段上,应该允许<h1><strong>之类的东西,但你需要删除所有<script>标签。

Laravel包括开箱即用的csrf令牌管理,因此您可以保存为跨侧附件。

编辑

正如TE在评论中所问,这就是你如何使用净化器:

安装后,您可以在配置中为转义定义多个配置(例如,如果您有不同的textares,其中一个要允许<h1>,另一个不允许)。在HTML.Allowed =>中编写所有允许使用的标记,在CSS.AllowedProperties =>中设置允许的样式更改(例如color)。

要转义输入,只需使用clean($input, 'Configurationname');,其中Configurationname是配置的名称。默认值为default

在视图中显示未显示的数据是很危险的,尤其是来自用户输入的数据。例如,用户可以通过在该页面上运行的表单保存JS脚本。

在无法使用{{}}防止XSS攻击的情况下,可以在将输入数据存储到数据库之前对其进行筛选。例如,使用regexp,您可以删除<script>标记,也可以首先使用not_regex:pattern验证请求输入。

除非您非常确定所显示的内容是完全安全的,否则不要使用{!!!}。请改用{{}}。还要确保您使用的是laravel的csrf令牌。

最新更新