有谁知道一种简单的方法来从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('

Blah blah blah
')

输出:

'<div>Blah blah blah</div>'

#5楼

var entityMap = {

'&': '&',

'

'>': '>',

'"': '"',

"'": ''',

'/': '/',

'`': '`',

'=': '='

};

function escapeHtml (string) {

return String(string).replace(/[&<>"'`=\/]/g, function (s) {

return entityMap[s];

});

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐