aurelia:正确清理 innerHTML 绑定数据

aurelia: properly sanitizing innerHTML-bound data

我完全知道我可以使用以下方法清理 innerHTML 绑定数据:

<div innerhtml.bind="someData | sanitizeHTML"></div>

但是,根据我的观察,此清理仅删除了 <script> 个标签。它不会保护用户免受事件驱动的内容的影响,例如:

"Hi! I am some HTML-formatted data from the server! <button onclick="getRekt();">Click me for butterflies!</button>"

是否有更好的方法来防止在元素上呈现任何类型的 javascript 或事件回调?

sanatizeHTML 值转换器是一个非常简单的清理程序,仅删除脚本标签。请参阅代码 here

您可以使用更复杂的消毒器创建自己的值转换器。查看 this answer 以了解有关如何在浏览器中清理 html 的更多详细信息。

但是不要忘记永远不要信任浏览器,如果可以的话最好在服务器端清理html然后再发送到浏览器显示它。