![](/img/trans.png)
[英]Strip all attributes from allowed HTML tags when using strip_tags on HTML string using JavaScript
[英]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.