问题 #3082✓ 已解决提出于 2020年10月20日作者 rukavina6 个反应

XSS 在 Live Preview 中的漏洞

快速解答作者 artf2

如果你用 GrapesJS 并允许插入自定义 HTML,是的,Self-XSS 是可行的。 不幸的是,有几个问题让我无法正确修复我需要访问iframe的DOM来添加或更新内部组件,所以编辑器没有'sandbox=“allow-same-origin”就无法工作。在编辑器中运行 JS 是它的一个功能(Components with JS),所以要让它们正常工作,我还需要“允许脚本”同时拥有“允许同源”和“允许脚本”几乎就像不使用“沙盒”一样,因为 iframe 能够访问 cookie 和其他网络存储接口(例如:LocalStorage、SessionStorage 等)母文档的。 目前我看到的唯一有效解决方案是默认只启用“sandb...

阅读下方完整回答 ↓

问题

版本: 0.16.22

你能重现演示中的bug吗?

[x] 是的

步骤:

  • 点击导入HTML
  • 插入 '<img src=“any_image_source.gif” onload =“alert(1)”/>'
  • JS将被处决

在iframe上设置合适的“沙盒”属性或许能缓解这个问题。

回答(3)

👍 最有帮助artf2020年10月23日

如果你用 GrapesJS 并允许插入自定义 HTML,是的,Self-XSS 是可行的。 不幸的是,有几个问题让我无法正确修复我需要访问iframe的DOM来添加或更新内部组件,所以编辑器没有'sandbox=“allow-same-origin”就无法工作。在编辑器中运行 JS 是它的一个功能(Components with JS),所以要让它们正常工作,我还需要“允许脚本”同时拥有“允许同源”和“允许脚本”几乎就像不使用“沙盒”一样,因为 iframe 能够访问 cookie 和其他网络存储接口(例如:LocalStorage、SessionStorage 等)母文档的。 目前我看到的...

rukavina2020年10月28日

你说得对,我们以为'sandbox=“allow-same-origin”就能解决,但'allow-scripts'也需要,这样就等于根本不用沙盒了。 不过,也许有用的是,提供一种方式让 Grapejs 用户能够以某种方式控制 iframe 画布的属性——这样他们就能承担起责任,控制沙盒值或其他属性。

谢谢!

blinkybill2021年2月7日

如果你使用内容安全策略的HTTP头,可以绕过很多类似的XSS问题。但是GrapesJS目前有一个问题,就是它使用underscore.js,其中包含一个使用“eval”的函数,所以你无法让CSP头达到应有的安全水平

相关问答

通过相似的问题讨论继续研究。

问题 #1693

CSS/HTML 预览中的奇怪字符(Â);元素并未完全删除

虫子你是否使用最新版本(旧版本不支持)?0.14.50你是在本地GrapesJS还是当前演示版遇到这个bug? 这是本地副本。所使用的版本(包括插件)有: '''json “依赖关系”: { “ckeditor”: “^4.11.1”, “grapesjs”: “^0.14.5...

3 个回答更新于 2020年1月15日

问题 #2661

ToggleStateCls 返回 js 错误

大家好。 我在LayerManager发现了一个bug: 我在LM里有一个HTML注释作为图层。 我点开了评论。 控制台出现错误提示: 而这个错误涉及的代码是: src/style_manager/view/SectorsView.js:47 所以,html 评论不能有 cla...

2 个回答更新于 2020年3月29日

问题 #2548

无法在开启缩放的情况下滚动所有画布

当开启缩放时,无法滚动覆盖所有画布并移动组件。 我认为是变换:scale(1.5) translate(0px);画布上的财产问题的根源。 如果我在画布外启用了 overflow: scroll 属性,我只能移动部分画布,不能移动所有画布大小。 <img width=“892”...

3 个回答更新于 2021年2月19日

问题 #2906

BUG:editor.refresh() 在自定义设置中无法正常工作

我遇到了一个自定义设置的问题,画布iframe用js在内面移动。“editor.refresh()”调用并不会修复移动后工具的位置。 我觉得问题出在刷新时偏移缓存没有被清除。 如果我在刷新前调用,工具的位置会如预期般: editor.trigger('test:canvasOf...

3 个回答更新于 2020年9月13日

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

浏览插件分类

直接跳转到市场上的插件分类页面。