如果我需要加載一些不受信任的外部 HTML 內容并將它們呈現在 DOM 上,那么使用該innerHTML屬性是否足以防止惡意腳本?
通過我自己的測驗和這篇文章,<script>在 HTML 中設定innerHTML為 DOM 中現有元素(主或影子)的標簽不會被執行。那么即使腳本在那里,執行它會不會防止安全風險?
對于增加的措施,它還可以幫助查找所有<script>標簽并將它們從 DOM 中洗掉。這甚至有必要嗎?
uj5u.com熱心網友回復:
不,這還不夠好。行內處理程式仍然可以執行 - 最值得注意的是,那些將立即執行的處理程式。例如:
const untrustworthyContent = `
<div>
<img src one rror="alert('evil');">
</div>
`;
document.querySelector('div').innerHTML = untrustworthyContent;
<div></div>
任何東西都可以放入這樣的行內處理程式屬性中,包括加載其他惡意腳本。
對于增加的措施,它還可以幫助查找所有標簽并將它們從 DOM 中洗掉。這甚至有必要嗎?
最好徹底做。<script>在考慮渲染之前洗掉所有標簽和行內處理程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449191.html
標籤:javascript html 安全 xss 网络安全
