有谁知道一种简单的方法来从jQuery的字符串中转义HTML? 我需要能够传递任意字符串并正确地对其进行转义以显示在HTML页面中(防止JavaScript / HTML注入攻击)。 我敢肯定可以扩展jQuery来做到这一点,但是目前我对框架的了解还不够。
#1楼
escape()和unescape()用于对URL(而非HTML)的字符串进行编码/解码。
实际上,我使用以下代码片段来完成不需要任何框架的技巧:
var escapedHtml = html.replace(/&/g, '&')
.replace(/>/g, '>')
.replace(/
.replace(/"/g, '"')
.replace(/'/g, ''');
#2楼
这是一个干净清晰的JavaScript函数。 它将诸如“几
function escapeHtmlEntities (str) {
if (typeof jQuery !== 'undefined') {
// Create an empty div to use as a container,
// then put the raw text in and get the HTML
// equivalent out.
return jQuery('
}
// No jQuery, so use string replace.
return str
.replace(/&/g, '&')
.replace(/>/g, '>')
.replace(/
.replace(/"/g, '"')
.replace(/'/g, ''');
}
#3楼
function htmlEscape(str) {
var stringval="";
$.each(str, function (i, element) {
alert(element);
stringval += element
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/
.replace(/>/g, '>')
.replace(' ', '-')
.replace('?', '-')
.replace(':', '-')
.replace('|', '-')
.replace('.', '-');
});
alert(stringval);
return String(stringval);
}
#4楼
尝试Underscore.string lib,它与jQuery一起使用。
_.str.escapeHTML('
输出:
'<div>Blah blah blah</div>'
#5楼
var entityMap = {
'&': '&',
'
'>': '>',
'"': '"',
"'": ''',
'/': '/',
'`': '`',
'=': '='
};
function escapeHtml (string) {
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}