Javascript 了解Dart 1.11';新的HTML消毒

Javascript 了解Dart 1.11';新的HTML消毒,javascript,html,web-applications,dart,Javascript,Html,Web Applications,Dart,我刚升级到Dart 1.11,我不太理解.appendHTML()的情况。我有一个使用dart的非常大的项目,并且经常使用。appendHTML()。我已经在这个应用上工作了一年多了,现在什么都不能用了/ 我的控制台如下所示: Removing disallowed attribute <DIV style="width: 100%; text-align: right;"> Removing disallowed attribute <DIV style="height: 2

我刚升级到Dart 1.11,我不太理解
.appendHTML()
的情况。我有一个使用dart的非常大的项目,并且经常使用
。appendHTML()
。我已经在这个应用上工作了一年多了,现在什么都不能用了/

我的控制台如下所示:

Removing disallowed attribute <DIV style="width: 100%; text-align: right;">
Removing disallowed attribute <DIV style="height: 2em;">
Removing disallowed attribute <DIV style="height: 0.6em;">
Removing disallowed attribute <DIV style="height: 2em;">
Removing disallowed attribute <DIV style="height: 1em;">
Removing disallowed attribute <DIV style="text-align: justify;">
Removing disallowed attribute <DIV style="height: 1em;">
Removing disallowed attribute <DIV style="height: 0.6em;">
Removing disallowed attribute <SPAN style="color: #0d4b63; font-size: 1.6em;">
而样式刚刚被删除:

Removing disallowed attribute <DIV style="height: 2em; background: red;">
删除不允许的属性
但在我看来,它确实像是有效的HTML。:/

有人能给我解释一下这里发生了什么,为什么以及如何让我的项目再次运行吗

非常感谢

编辑:

还将删除svg元素:

Removing disallowed element <g>
Removing disallowed element <text>
Removing disallowed element <image>
Removing disallowed element <polygon>
删除不允许的元素
删除不允许的元素
删除不允许的元素
删除不允许的元素

创建自定义的
NodeTreeSanimatizer
是一条可行之路。任何地方都可以在应用HTML时将文本添加到DOM中。卫生设施没有在
.appeedHTML()中完成,这只是一个疏忽。关键是要明确声明哪些元素可以添加到DOM中,哪些属性可以添加到这些元素中。这样做是为了确保不会错误地将恶意HTML或JS添加到页面中

谢谢!我仍然无法理解为什么style属性是恶意的,并且正在被删除。我将等到1.12发布后再使用“nodetreesanizizer.trusted”。您可以隐藏阻止用户正确使用页面的UI元素,或者显示和定位其他元素。CSS非常强大,尤其是与其他技术相结合,它可能会为攻击打开漏洞。安全性很麻烦,但您的客户应该值得。我理解这一点,但为什么
new DivElement()…style.height='3em'
可以,而
appendHtml(“”)
不行?或者是为了防止类似的东西从数据库中产生HTML。(开发人员在代码中未提供HTML),因为它是在Dart中硬编码的。问题是当它来自一个字符串时,它可能来自用户输入,这是非常危险的。当字符串是Dart字符串文字(如示例中所示)时,它同样可以保存,但需要语言支持才能识别差异
appeedhtml()
无法知道字符串的来源。是的,我现在看到了。这很有道理。谢谢!(这甚至修复了我不知道的项目的安全问题=))
Removing disallowed element <g>
Removing disallowed element <text>
Removing disallowed element <image>
Removing disallowed element <polygon>