簡體   English   中英

這是使用js剝離html標簽的安全方法嗎?

[英]Is this a safe way to strip html tags using js?

我需要從字符串中刪除html標簽。 我不喜歡使用正則表達式,因為總會有人找到打破它的方法。 但是,使用dom會帶來明顯的風險。

使用createDocumentFragment怎么樣?

function striptags(content) {
  var frag = document.createDocumentFragment();
  var innerEl = document.createElement('div');
  frag.appendChild(innerEl);
  innerEl.innerHTML = content;
  return frag.firstChild.innerText;
}
striptags('<script>alert("xss attack!")</script>');

這是使用js剝離html標簽的安全方法嗎?

否,使用文檔片段無濟於事。 盡管innerHTML不會評估<script> ,但是您的方法仍然容易受到其他XSS做法的影響(例如striptags('<img src="" onerror="alert(\\'xss attack!\\')"></img>') )。


只需使用正則表達式刪除或替換您想擺脫的東西,然后轉義其余部分(無論如何您都應該這樣做)。

function striptags(content) {
  return escapeHtml(content.replace(/<\/p>/g, "\n\n")
                           .replace(/<br[^>]*>/g, "\n")
                           .replace(/<[^>]*>/g, ""));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM