我的Javascript代码可以安全地防止XSS吗?

问题描述 投票:0回答:1

我有一个网站,为了方便起见,我在错误页面中放置了两个输入参数 第一个参数(code)是错误代码 第二个参数(desc)是错误文本

并且两个输入参数都显示在页面的标签中

所以,为了防止XSS,我添加了以下代码:

<script>
            const urlParams = new URLSearchParams(window.location.search);
            const code = urlParams.get('code');
            const desc = urlParams.get('desc');
            var el = document.getElementById("txt-code");
            if (!(code.toLowerCase().includes("script") || code.toLowerCase().includes("<") || code.toLowerCase().includes(">")))
                el.innerHTML = code.toLowerCase().replace("script", "");
            var deskarea = document.getElementById("desc-area");
            if (desc == null || desc == '') {
                deskarea.style.display = "none";
            } else {
                var el1 = document.getElementById("txt-desc");
                if (!(desc.toLowerCase().includes("script") || desc.toLowerCase().includes("<") || desc.toLowerCase().includes(">")))
                    el1.innerHTML = desc.toLowerCase().replace("script", "");
            }
</script>

众所周知,我过滤了“<", ">”,“script”(字母大小写都没关系),所以如果不良用户输入JavaScript代码,文本将不会显示在页面上,并且会仅显示为空字符串。

有办法绕过我的过滤器吗?如果是(告诉我如何绕过?以及如何解决这个错误?

谢谢

我输入“”“

使用

textConent
代替
innerHTML
,这样你就不用担心XSS了

<script>
     const urlParams = new URLSearchParams(window.location.search);
     document.getElementById("txt-code").textContent = urlParams.get('code') ?? "";
     document.getElementById("txt-desc").textContent = urlParams.get('desc') ?? "";
</script>
javascript xss
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.