|
@@ -1,5 +1,38 @@
|
|
|
-module.exports = {
|
|
|
- init($, config) {
|
|
|
+const xss = require('xss')
|
|
|
|
|
|
+module.exports = {
|
|
|
+ async init(input, config) {
|
|
|
+ if (config.safeHTML) {
|
|
|
+ input = xss(input, {
|
|
|
+ whiteList: {
|
|
|
+ ...xss.whiteList,
|
|
|
+ a: ['class', 'id', 'href', 'target', 'title'],
|
|
|
+ blockquote: ['class', 'id'],
|
|
|
+ code: ['class'],
|
|
|
+ div: ['class', 'id'],
|
|
|
+ em: ['class'],
|
|
|
+ h1: ['class', 'id'],
|
|
|
+ h2: ['class', 'id'],
|
|
|
+ h3: ['class', 'id'],
|
|
|
+ h4: ['class', 'id'],
|
|
|
+ h5: ['class', 'id'],
|
|
|
+ h6: ['class', 'id'],
|
|
|
+ img: ['alt', 'class', 'draggable', 'height', 'src', 'width'],
|
|
|
+ li: ['class'],
|
|
|
+ ol: ['class'],
|
|
|
+ p: ['class'],
|
|
|
+ pre: ['class'],
|
|
|
+ strong: ['class'],
|
|
|
+ table: ['border', 'class', 'id', 'width'],
|
|
|
+ tbody: ['class'],
|
|
|
+ td: ['align', 'class', 'colspan', 'rowspan', 'valign'],
|
|
|
+ th: ['align', 'class', 'colspan', 'rowspan', 'valign'],
|
|
|
+ thead: ['class'],
|
|
|
+ tr: ['class', 'rowspan', 'align', 'valign'],
|
|
|
+ ul: ['class']
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return input
|
|
|
}
|
|
|
}
|