margox / braft-editor

美观易用的React富文本编辑器,基于draft-js开发
MIT License
4.61k stars 593 forks source link

xss注入有什么好的解决方案么? #521

Open Robert2333 opened 5 years ago

Robert2333 commented 5 years ago

现在的编辑器,如果在同一行里输入

是会产生xss攻击的,我看了下文档,持久化保存html的话 react展示用dangerouslySetInnerHTML,则直接会导致xss吧,有什么好的解决方案么?

margox commented 5 years ago

编辑器自身输出的内容都是会把html转成实的,你那边难道直接拿到了原始html?------------------ 原始邮件 ------------------ 发件人: "Robert2333"notifications@github.com 发送时间: 2019年6月6日(星期四) 晚上10:22 收件人: "margox/braft-editor"braft-editor@noreply.github.com; 抄送: "Subscribed"subscribed@noreply.github.com; 主题: [margox/braft-editor] xss注入有什么好的解决方案么? (#521)

现在的编辑器,如果在同一行里输入

是会产生xss攻击的,我看了下文档,持久化保存html的话 react展示用dangerouslySetInnerHTML,则直接会导致xss吧,有什么好的解决方案么?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

Robert2333 commented 5 years ago

我问题没描述清楚,不好意思。 是我在文本框输入 是会产生xss攻击的,我看了下文档,持久化保存html的话 react展示用dangerouslySetInnerHTML,则直接会导致xss吧,有什么好的解决方案么? — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

Robert2333 commented 5 years ago

目前我的解决方案是直接扔给后台java处理了,但是这样,预览功能会导致xss,囧😳

Tianruo commented 5 years ago

对哦,用dangerouslySetInnerHTML的确有这个问题,同问

Robert2333 commented 5 years ago

对哦,用dangerouslySetInnerHTML的确有这个问题,同问

目前我的做法是将一些危险标签直接js过滤一遍,然后后台也过滤一遍。 能转义的转义了。

zhigang1992 commented 4 years ago
import { FilterXSS, getDefaultWhiteList } from 'xss';
import 'braft-editor/dist/output.css';

const whiteList = getDefaultWhiteList();
whiteList.div?.push('style', 'class');
whiteList.p?.push('style', 'class');
const filter = new FilterXSS({ whiteList });
return filter.process(input);