vue.js 通常使用 或者 v-text 指令进行数据绑定,vue.js 会自动将模板编译成对应 的 js 代码
模板代码:
实际 js 代码:
可以看到数据绑定实际是通过 textContent 来实现 DOM 值的插入,在这种情况下浏览器不 会对内容进行解析,也就不存在 xss 问题。不过为了应对富文本输入的需求,vue.js 还有 一个 v-html 指令,会使数据被当作 html 代码解析
模板代码:
实际 js 代码:
vue.js 服务端模板注入:服务端渲染模版本身是为了提前生成 html,利于某些站点的 seo 和加快页面加载,如果对模版中用户数据处理不当,就会导致模版注入的问题。
尝试输入 2+2
, 如果输入点存在服务端模板注入,会返回 4