【问题标题】:Sanitize html for injection using javascript innerHTML?使用 javascript innerHTML 清理 html 以进行注入?
【发布时间】:2018-03-01 09:53:14
【问题描述】:

需要修复下面的函数以在listStr 中清理 html,尝试了各种 HTML 转义函数 (listDom.innerHTML = escapeHTML(listStr);) 但我得到的是原始文本而不是元素!

    function createList(list) {
        let listStr = "";

        list.forEach(function (item) {

            if (item.click) {
                var clean_url = encodeURIComponent(item.href);
                clean_url = "";
                //console.log(clean_url);
                listStr += `<div class='list_item' id="${item.uid}"><a href="javascript:void(0);">${item.label}</a></div>`;

            } else {
                //'loop', i + ''
                listStr += `<div class='list_item' id="${item.uid}" loop="${item.loop}"><a href="${item.href}">${item.label}</a></div>`;
            }
        });

        listStr += '';

        let listDom = document.createElement("div");
        listDom.setAttribute("id", "list");
        listDom.setAttribute("style", "display: none;");
        listDom.innerHTML = listStr;

        return listDom;
    }

【问题讨论】:

    标签: javascript html sanitization html-sanitizing


    【解决方案1】:

    我最终这样做了:

                    let listItem = document.createElement('div');
                    listItem.setAttribute('class', 'list_item');
                    listItem.setAttribute('id', item.uid);
    
                    let linkItem  = document.createElement('a');
                    linkItem.setAttribute('href', 'javascript:void(0);');
                    linkItem.innerText = item.label;
    
                    listItem.appendChild(linkItem);
                    listStr.appendChild(listItem);
    

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 2012-01-25
      • 2010-12-28
      • 2013-03-15
      • 2013-06-02
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多