npm库xss依赖的使用方法和vue3 中Web富文本编辑器 wangeditor 使用xss库解决 XSS 攻击的方法

npm库xss依赖的使用方法和vue3 中Web富文本编辑器 wangeditor 使用xss库解决 XSS 攻击的方法

    • [1. npm库xss依赖的使用方法](#1. npm库xss依赖的使用方法)
      • [1.1 xss库定义](#1.1 xss库定义)
      • [1.2 xss库功能](#1.2 xss库功能)
    • [2. vue3 中 wangeditor 使用xss库解决 XSS 攻击的方法和示例](#2. vue3 中 wangeditor 使用xss库解决 XSS 攻击的方法和示例)
      • [2.1 在终端执行如下命令安装 xss 依赖](#2.1 在终端执行如下命令安装 xss 依赖)
      • [2.2 在使用 wangeditor 的地方引入 xss 依赖](#2.2 在使用 wangeditor 的地方引入 xss 依赖)
      • [2.3 xss 依赖使用示例](#2.3 xss 依赖使用示例)

1. npm库xss依赖的使用方法

1.1 xss库定义

  • npm中有一个依赖名为xss,是一个可以对用户输入的内容进行过滤以避免遭受 XSS 攻击的js模块。

1.2 xss库功能

  • 不定义白名单,也不自定义处理函数时,采用xss库默认的过滤规则。
  • 可配置标签及标签属性白名单,作为允许的HTML标签及标签属性;
  • 可自定义处理函数,针对任意标签及标签属性进行自定义处理。

2. vue3 中 wangeditor 使用xss库解决 XSS 攻击的方法和示例

2.1 在终端执行如下命令安装 xss 依赖

bash 复制代码
npm install xss -S

2.2 在使用 wangeditor 的地方引入 xss 依赖

bash 复制代码
import xss from 'xss'

2.3 xss 依赖使用示例

javascript 复制代码
<template>
	<div>
		<div ref="myEditor" style="width: 100%">
		</div>
	</div>
</template>

<script lang="ts" setup>
import xss from 'xss'
import wangeditor from 'wangeditor'

let mailData = reactive({
	id: ''
})
const myEditor = ref(null)
let editorInstance = null
onMounted(() => {
	createWangeditor()
})
const createWangeditor = () => {
	editorInstance = new wangeditor(myEditor.value)
	let config = editorInstance.customConfig ?  editorInstance.customConfig :  editorInstance.config
	config.menus = [
		'head', // 标题
		'bold', // 加粗
		'fontName', // 字体
		'fontSize', // 字号
		'underline', // 下划线
		'strikeThrough', // 删除线
		'indent', // 
		'lineHeight', // 行高
		'foreColor', // 字体颜色
		'backColor', // 背景色
		'list', // 
		'justify' // 
	]
	config.fontNames = [
		'黑体',
		'仿宋',
		'楷体',
		'标楷体',
		'华文仿宋',
		'华文楷体',
		'宋体',
		'微软雅黑'
	]
	editorInstance.create()
}
onBeforeUnmount(() => {
	editorInstance = null
})

// 查询文本编辑器默认内容接口
const handleChange = () => {
	mailData.id = ''
	editorInstance.txt.html('')
	queryDefaultContent().then(res => {
		const {code, data} = res
		if(code === '000') {
			let {id, content} = data
			mailData.id = id
			// 不定义白名单,也不自定义处理函数时,采用xss库默认的过滤规则
			let safeContent = xss(content) // 进行xss攻击过滤
			editorInstance.txt.html(safeContent)
		}
	})
}
</script>
相关推荐
TimelessHaze23 分钟前
拆解字节面试题:async/await 到底是什么?底层实现 + 最佳实践全解析
前端·javascript·trae
执键行天涯1 小时前
从双重检查锁定的设计意图、锁的作用、第一次检查提升性能的原理三个角度,详细拆解单例模式的逻辑
java·前端·github
青青子衿越1 小时前
微信小程序web-view嵌套H5,小程序与H5通信
前端·微信小程序·小程序
OpenTiny社区1 小时前
TinyEngine 2.8版本正式发布:AI能力、区块管理、Docker部署一键强化,迈向智能时代!
前端·vue.js·低代码
qfZYG1 小时前
Trae 编辑器在 Python 环境缺少 Pylance,怎么解决
前端·vue.js·编辑器
bug爱好者1 小时前
Vue3 基于Element Plus 的el-input,封装一个数字输入框组件
前端·javascript
Silence_xl2 小时前
RACSignal实现原理
前端
柯南二号2 小时前
【大前端】实现一个前端埋点SDK,并封装成NPM包
前端·arcgis·npm
dangkei2 小时前
【Wrangler(Cloudflare 的官方 CLI)和 npm/npx 的区别一次讲清】
前端·jvm·npm
乔公子搬砖2 小时前
小程序开发提效:npm支持、Vant Weapp组件库与API Promise化(八)
前端·javascript·微信小程序·js·promise·vagrant·事件绑定