Skip to content

Commit fb782d3

Browse files
Guillaume Chaumichalsnik
Guillaume Chau
authored andcommitted
555 - Fix HTML value not escaped in DataField (#556)
* Escape HTML in DataField value * Html data prop test
1 parent 0f2468a commit fb782d3

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

shells/dev/target/NativeTypes.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ export default {
6464
},
6565
largeArray: [],
6666
i: new Set([1, 2, 3, 4, new Set([5, 6, 7, 8]), new Map([[1, 2], [3, 4], [5, new Map([[6, 7]])]])]),
67-
j: new Map([[1, 2], [3, 4], [5, new Map([[6, 7]])], [8, new Set([1, 2, 3, 4, new Set([5, 6, 7, 8]), new Map([[1, 2], [3, 4], [5, new Map([[6, 7]])]])])]])
67+
j: new Map([[1, 2], [3, 4], [5, new Map([[6, 7]])], [8, new Set([1, 2, 3, 4, new Set([5, 6, 7, 8]), new Map([[1, 2], [3, 4], [5, new Map([[6, 7]])]])])]]),
68+
html: '<b>Bold</b> <i>Italic</i>'
6869
}
6970
},
7071
computed: {

src/devtools/components/DataField.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,8 @@ import {
157157
NAN,
158158
isPlainObject,
159159
sortByKey,
160-
openInEditor
160+
openInEditor,
161+
escape
161162
} from 'src/util'
162163
163164
import DataFieldEdit from '../mixins/data-field-edit'
@@ -285,7 +286,7 @@ export default {
285286
if (typeMatch) {
286287
return typeMatch[1]
287288
} else {
288-
return `<span>"</span>${value}<span>"</span>`
289+
return `<span>"</span>${escape(value)}<span>"</span>`
289290
}
290291
} else {
291292
return value

src/util.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,3 +426,18 @@ export function openInEditor (file) {
426426
eval(src)
427427
}
428428
}
429+
430+
const ESC = {
431+
'<': '&lt;',
432+
'>': '&gt;',
433+
'"': '&quot;',
434+
'&': '&amp;'
435+
}
436+
437+
export function escape (s) {
438+
return s.replace(/[<>"&]/g, escapeChar)
439+
}
440+
441+
function escapeChar (a) {
442+
return ESC[a] || a
443+
}

0 commit comments

Comments
 (0)