2

我非常清楚我可以使用以下方法清理内部 HTML 绑定数据:

<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 或事件回调?

4

1 回答 1

4

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

您可以使用更复杂的消毒剂创建自己的价值转换器。查看此答案以获取有关如何在浏览器中清理 html 的更多详细信息。

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

于 2017-10-10T07:51:44.360 回答