vue和nuxt使用npm xss, 防止xss注入

4,933 阅读1分钟

官网:www.npmjs.com/package/xss 

项目安装:npm install xss

一、简单使用:

1、vue项目中在main.js中设置,nuxt在vue.js中设置

 import xss from 'xss' // 导入xss包

 Vue.prototype.$xss = xss // 给vue原型加上


2、在会返回HTML标签的数据中用$xss()包裹就行

(1)在标签中使用

  <div v-html="$xss(data.html)"></div>  // data.html即为返回的标签数据

  (2)在返回数据中进行处理

 <div v-html="html"></div>

this.html = $xss(data.html) // data.html为<a href="#">点击</a> 类型的数据


二、自定义规则使用

1、vue项目中在main.js中设置,nuxt在vue.js中设置

import xss from 'xss' // 导入xss包

// 设置白名单 通过指定一个whiteList,例如{ 'tagName': [ 'attr-1', 'attr-2' ] }。不在白名单中的标签和属性将被过滤掉。例如:
// 仅允许标记a及其属性style,href,title,target
// 使用下面指定的配置,以下HTML:
// <a href="#" onclick="hello()"> <i>你好</ i> </a>
// 将变为:
// <a href="#">你好</a>
const options = {
whiteList: { ...xss.whiteList,
a: ['style', 'href', 'title', 'target']
}
}

const myxss = new xss.FilterXSS(options)

Vue.prototype.$xss = (val) => {
// 然后应用myxss.process()
return myxss.process(val)
}


2、在会返回HTML标签的数据中用$xss()包裹就行

(1)在标签中使用

<div v-html="$xss(data.html)"></div> // data.html即为返回的标签数据

(2)在返回数据中进行处理

<div v-html="html"></div>

this.html = $xss(data.html) // data.html为<a href="#">点击</a> 类型的数据