繁体   English   中英

使用javascript innerHTML清理HTML以进行注入?

[英]Sanitize html for injection using javascript innerHTML?

需要修复下面的函数以清理listStr内的listStr ,尝试了各种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;
    }

我最终这样做是这样的:

                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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM