File tree Expand file tree Collapse file tree 6 files changed +29
-7
lines changed Expand file tree Collapse file tree 6 files changed +29
-7
lines changed Original file line number Diff line number Diff line change 43
43
"vue-router" : " ^3.0.1" ,
44
44
"vuedraggable" : " ^2.16.0" ,
45
45
"vuex" : " ^3.0.1" ,
46
- "xlsx" : " ^0.15.1"
46
+ "xlsx" : " ^0.15.1" ,
47
+ "xss" : " ^1.0.15"
47
48
},
48
49
"devDependencies" : {
49
50
"@babel/core" : " ^7.4.5" ,
Original file line number Diff line number Diff line change 28
28
<ErrorCode406 v-if =" code === 406" ></ErrorCode406 >
29
29
<ErrorCode407 v-if =" code === 407" ></ErrorCode407 >
30
30
<ErrorCode500 v-if =" code === 500" :response-text =" responseText" ></ErrorCode500 >
31
- <div class =" default-modal" v-if =" code === 'default'" v-html =" responseText" ></div >
31
+ <div class =" default-modal" v-if =" code === 'default'" v-html =" filterXSS( responseText) " ></div >
32
32
</div >
33
33
</bk-dialog >
34
34
</template >
Original file line number Diff line number Diff line change 12
12
import './public-path.js'
13
13
import Vue from 'vue'
14
14
import VeeValidate , { Validator } from 'vee-validate'
15
+ import filterXSS from 'xss'
15
16
import router from './routers/index.js'
16
17
import store from './store/index.js'
17
18
import './directives/index.js'
@@ -211,6 +212,12 @@ Validator.localize({
211
212
}
212
213
} )
213
214
215
+ Vue . prototype . filterXSS = input => filterXSS ( input , {
216
+ whiteList : {
217
+ a : [ 'href' ]
218
+ }
219
+ } )
220
+
214
221
new Vue ( {
215
222
i18n,
216
223
router,
Original file line number Diff line number Diff line change 150
150
return ' '
151
151
}
152
152
if (typeof data === ' string' ) {
153
- const info = data .replace (/ \n / g , ' <br>' )
153
+ // 只渲染a标签,不过滤换行
154
+ let info = data .replace (/ \n / g , ' <br>' )
155
+ info = this .filterXSS (info, {
156
+ whiteList: {
157
+ a: [' href' ],
158
+ br: []
159
+ }
160
+ })
154
161
return info
155
162
} else {
156
163
return data
Original file line number Diff line number Diff line change 1009
1009
return ' '
1010
1010
}
1011
1011
if (typeof data === ' string' ) {
1012
- const info = data .replace (/ \n / g , ' <br>' )
1012
+ // 只渲染a标签,不过滤换行
1013
+ let info = data .replace (/ \n / g , ' <br>' )
1014
+ info = this .filterXSS (info, {
1015
+ whiteList: {
1016
+ a: [' href' ],
1017
+ br: []
1018
+ }
1019
+ })
1013
1020
return info
1014
1021
} else {
1015
1022
return data
Original file line number Diff line number Diff line change 113
113
if (output .value === ' undefined' || output .value === ' ' ) {
114
114
return ' --'
115
115
} else if (! output .preset && this .nodeDetailConfig .component_code === ' job_execute_task' ) {
116
- return output .value
116
+ return this . filterXSS ( JSON . stringify ( output .value ))
117
117
} else if (Array .isArray (output .value )) {
118
118
if (! output .value .length ) return ' --'
119
119
return output .value .reduce ((acc , cur ) => {
120
- let str = cur
120
+ let str = this . filterXSS ( cur)
121
121
if (this .isUrl (cur)) {
122
122
str = ` <a style="color: #3a84ff; word-break: break-all;" target="_blank" href="${ cur} ">${ cur} </a>`
123
123
}
128
128
if (this .isUrl (output .value )) {
129
129
return ` <a style="color: #3a84ff; word-break: break-all;" target="_blank" href="${ output .value } ">${ output .value } </a>`
130
130
}
131
- return output .value
131
+ return this . filterXSS ( JSON . stringify ( output .value ))
132
132
}
133
133
}
134
134
}
You can’t perform that action at this time.
0 commit comments