Merge "Remove unnecessary HTML escaping"
This commit is contained in:
@@ -14,6 +14,17 @@
|
|||||||
(function(window, GrDiffGroup, GrDiffLine) {
|
(function(window, GrDiffGroup, GrDiffLine) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var HTML_ENTITY_PATTERN = /[&<>"'`\/]/g;
|
||||||
|
var HTML_ENTITY_MAP = {
|
||||||
|
'&': '&',
|
||||||
|
'<': '<',
|
||||||
|
'>': '>',
|
||||||
|
'"': '"',
|
||||||
|
'\'': ''',
|
||||||
|
'/': '/',
|
||||||
|
'`': '`',
|
||||||
|
};
|
||||||
|
|
||||||
// Prevent redefinition.
|
// Prevent redefinition.
|
||||||
if (window.GrDiffBuilder) { return; }
|
if (window.GrDiffBuilder) { return; }
|
||||||
|
|
||||||
@@ -386,7 +397,7 @@
|
|||||||
td.classList.add('content');
|
td.classList.add('content');
|
||||||
}
|
}
|
||||||
td.classList.add(line.type);
|
td.classList.add(line.type);
|
||||||
var html = util.escapeHTML(text);
|
var html = this._escapeHTML(text);
|
||||||
html = this._addTabWrappers(html, this._prefs.tab_size);
|
html = this._addTabWrappers(html, this._prefs.tab_size);
|
||||||
|
|
||||||
if (!this._prefs.line_wrapping &&
|
if (!this._prefs.line_wrapping &&
|
||||||
@@ -577,5 +588,11 @@
|
|||||||
!(!group.adds.length && !group.removes.length);
|
!(!group.adds.length && !group.removes.length);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GrDiffBuilder.prototype._escapeHTML = function(str) {
|
||||||
|
return str.replace(HTML_ENTITY_PATTERN, function(s) {
|
||||||
|
return HTML_ENTITY_MAP[s];
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
window.GrDiffBuilder = GrDiffBuilder;
|
window.GrDiffBuilder = GrDiffBuilder;
|
||||||
})(window, GrDiffGroup, GrDiffLine);
|
})(window, GrDiffGroup, GrDiffLine);
|
||||||
|
|||||||
@@ -949,6 +949,19 @@ limitations under the License.
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('_escapeHTML', function() {
|
||||||
|
var input = '<script>alert("XSS");<' + '/script>';
|
||||||
|
var expected = '<script>alert("XSS");' +
|
||||||
|
'</script>';
|
||||||
|
var result = GrDiffBuilder.prototype._escapeHTML(input);
|
||||||
|
assert.equal(result, expected);
|
||||||
|
|
||||||
|
input = '& < > " \' / `';
|
||||||
|
expected = '& < > " ' / `';
|
||||||
|
result = GrDiffBuilder.prototype._escapeHTML(input);
|
||||||
|
assert.equal(result, expected);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -33,10 +33,10 @@
|
|||||||
if (!account || (!account.name && !account.email)) { return; }
|
if (!account || (!account.name && !account.email)) { return; }
|
||||||
var result = '';
|
var result = '';
|
||||||
if (account.name) {
|
if (account.name) {
|
||||||
result += util.escapeHTML(account.name);
|
result += account.name;
|
||||||
}
|
}
|
||||||
if (account.email) {
|
if (account.email) {
|
||||||
result += ' <' + util.escapeHTML(account.email) + '>';
|
result += ' <' + account.email + '>';
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -24,22 +24,6 @@
|
|||||||
return new Date(dateStr.replace(' ', 'T') + 'Z');
|
return new Date(dateStr.replace(' ', 'T') + 'Z');
|
||||||
};
|
};
|
||||||
|
|
||||||
util.htmlEntityMap = {
|
|
||||||
'&': '&',
|
|
||||||
'<': '<',
|
|
||||||
'>': '>',
|
|
||||||
'"': '"',
|
|
||||||
'\'': ''',
|
|
||||||
'/': '/',
|
|
||||||
'`': '`',
|
|
||||||
};
|
|
||||||
|
|
||||||
util.escapeHTML = function(str) {
|
|
||||||
return str.replace(/[&<>"'`\/]/g, function(s) {
|
|
||||||
return util.htmlEntityMap[s];
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
util.getCookie = function(name) {
|
util.getCookie = function(name) {
|
||||||
var key = name + '=';
|
var key = name + '=';
|
||||||
var cookies = document.cookie.split(';');
|
var cookies = document.cookie.split(';');
|
||||||
|
|||||||
Reference in New Issue
Block a user