Javascript 这是一种好的字符串消毒剂吗?

Javascript 这是一种好的字符串消毒剂吗?,javascript,jquery,sanitize,Javascript,Jquery,Sanitize,可能重复: 我找不到一个好的字符串清理函数可以在HTML中安全使用。我想知道这是否是一个好方法: String.prototype.sanitize = function() { return $('<div></div>').text(this).html(); } String.prototype.sanitize=function(){ 返回$('').text(this.html(); } 针对XSS进行消毒,是的。对于针对SQL注入的清理,否。对于针对X

可能重复:

我找不到一个好的字符串清理函数可以在HTML中安全使用。我想知道这是否是一个好方法:

String.prototype.sanitize = function() {
  return $('<div></div>').text(this).html();
}
String.prototype.sanitize=function(){
返回$('').text(this.html();
}

针对XSS进行消毒,是的。对于针对SQL注入的清理,否。

对于针对XSS的清理,是的。对于针对SQL注入的消毒,不。

最好(而且仍然很容易)删除该要求:

String.prototype.htmlspecialchars = function() {
  var span = document.createElement('span'),
  txt = document.createTextNode(this);

  span.appendChild(txt);

  return span.innerHTML;
}
document
的耦合仍然没有那么糟糕,因为这正是它将要使用的地方,但我更喜欢使用连续的
String.replace()
,如中所示。

删除需求更好(而且更容易):

String.prototype.htmlspecialchars = function() {
  var span = document.createElement('span'),
  txt = document.createTextNode(this);

  span.appendChild(txt);

  return span.innerHTML;
}

document
的耦合仍然没有那么糟糕,因为这正是它将要使用的地方,但我更喜欢使用类似于中的连续
String.replace()

谢谢!因为我的要求是前端保护,这就足够了。谢谢!因为我的要求是前端保护,这就足够了。制作一个
String的方法。prototype
意识到类似
jQuery
的东西是一种不好的耦合。prototype意识到类似
jQuery
的东西是一种不好的耦合。这是一种很好的重构。谢谢,杰克。这是一个很好的重构。谢谢你,杰克。