我听说如果允许用户输入JS代码并使用eval函数时,网站容易受到危险的XSS攻击。我计划为我的文本扩展插件做类似的功能(输入一些文本->按快捷键->文本自动扩展)。
我将允许用户粘贴纯html字符串文本,并以漂亮的格式查看它。这是用div元素中的innerHTML属性实现的。我非常清楚,恶意用户会在纯文本中放入恶意
我将允许用户粘贴纯html字符串文本,并以漂亮的格式查看它。这是用div元素中的innerHTML属性实现的。我非常清楚,恶意用户会在纯文本中放入恶意
在扩展程序中粗心使用innerHTML
可能会导致多个(安全)问题,包括:
DOMParser
或document.implementation.createHTMLDocument
创建此类无视图文档)。请注意,即使在这样的文档中分配innerHTML是安全的,但在具有视图的文档中插入来自这样的文档的元素是完全不安全的。有关XSS的一般信息,请参见OWASP的XSS文章。"manifest_version": 2
的扩展。这大大减少了扩展中XSS的影响,但它并非完美无缺,您不应将CSP用作不正确地处理分配给innerHTML
的数据的借口。DOMParser
)解析HTML。在选择要接受的元素和属性时要小心。例如,this safeResponse.js file似乎是一个很好的开始(因为它删除了脚本标签和除一些看似安全的属性外的所有属性),但实际上并不是。有人可以使用style
属性使元素透明并处于整个文档的顶部,然后在href
属性中放置一个javascript:
链接(浏览器会去掉链接前面的空格)。当用户单击页面中的任何位置时,脚本将在页面的上下文中运行。此sendResponse.js的补丁修复了这个问题,结果可能对XSS是安全的(但不安全的隐私侵犯,例如可以通过style
属性引用外部内容中的CSS)。
const name = "<img src='x' onerror='alert(1)'>"; el.innerHTML = name; // shows the alert
可能会有安全问题。我认为这就是我担心的问题。我会更新我的问题。 - Gaurang Tandon