共计 557 个字符,预计需要花费 2 分钟才能阅读完成。
XSS 简略来说就是 非法脚本 存储在了服务端,并输入到了用户客户端,脚本执行后就会读取 cookie 等隐衷数据 并发送信息给攻击者
模仿一段攻打文本
let xssText = '<script> console.log('cookie 数据为 ', document.cookie) </script>'
如果将这段文本间接写在 html 标签外面,那么它会间接执行(如 innerHtml 操作)
这个时候就是十分不平安的,那么怎么做能力防止这种景象产生呢?有两种办法
1.innerText 办法
2.createTextNode 创立文本节点
vue 中是如何操作的呢
咱们来看一段模板代码
<template>
<div>{{xssText}}<div>
</template>
这种操作无害吗?no,齐全有害,我来剖析一下
下面一段模板代码生成的 render 函数相似于
createElement('div', {}, xxsText ) // 创立 vnode
vue 在 patchVnode(虚构 dom 生成 实在 dom)有如下代码 解决子节点
红框局部意思是 如果 vnode 子节点为 根本类型 如字符串,那么该文本会通过 createTextNode 办法 生成 文本节点,而后插入父节点
所以 很显著 xssText 被 createTextNode 解决成了纯字符串了,变成有害的了,so easy
正文完