关于vue.js:Vue中是如何防御XSS注入攻击的

44次阅读

共计 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

正文完
 0