javascript:转义html,并将纯文本链接转换为标记
我使用下划线js方法来转义HTML:javascript:转义html,并将纯文本链接转换为标记,javascript,jquery,html,escaping,Javascript,Jquery,Html,Escaping,我使用下划线js方法来转义HTML: var __entityMap = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }; String.prototype.escapeHTML = function() { return String(this).replace(/[&<>"'\/
var __entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
"'": ''',
"/": '/'
};
String.prototype.escapeHTML = function() {
return String(this).replace(/[&<>"'\/]/g, function(s) {
return __entityMap[s];
});
}
问题是,这也逃逸/这使我的自动链接器不再工作
我正在使用:
我应该如何解决此问题 正如评论中所建议的那样——没有理由转义一个正斜杠——只要将它从转义字符列表中删除,就不会遇到任何问题。您只需要转义字符,如果保留完整的话,这些字符将破坏代码,并且正斜杠不太可能导致任何问题
逃避前向斜杠,这可能就是为什么在某个时候建议您这样做的原因——但该建议是用于从不受信任的源加载内容。如果您正在加载自己编写的模板,您不必担心会对自己运行跨站点脚本攻击。我不明白为什么/首先需要转义?只需将其从_entityMap中删除即可。我确实从不可信的来源加载。我不确信-他们的推理是,正斜杠被包括在内,因为它有助于结束HTML实体不是一个强参数,除非我遗漏了一些东西,否则没有其他引用?。如果我们后退一步。。。根本问题是,转义html实际上只需要转义&-引号不会造成任何伤害,但它完全取决于嵌入结果字符串的上下文。在我看来,正斜杠是完全没有必要的,而且它只会破坏第三方图书馆的正常运作,不会污染网络。是的,我倾向于这样说,因为它只会与你已经逃离的其他角色组合在一起很危险,找一些复杂的解决方法是不值得的——在这种情况下,只需对推荐的列表做一个例外,因为你知道你正在逃避这个问题。