javascript – 如何在以下代码中阻止XSS?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在以下代码中阻止XSS?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 HTML5 Javascript中编写了一些代码,当用户在User中输入他的名字时,它会像“Hello< user>”一样反映出来.现在这个脚本容易受到XSS(跨站点脚本)的攻击.

这是我的代码

<!DOCTYPE html>
<html>
<head>
<Meta charset="utf-8"/>
<title>Forms Welcome</title>

<script>
function write_name(){

    var welcome_parra = document.getElementById('welcome');
    var name =  document.getElementById('name');
    welcome_parra.innerHTML = "welcome " + name.value;
}
</script>
</head>

<body>
    <p id="welcome"></p>
    <form>
        Username: <input type="text" name="username" maxlength="20" id="name"/>
        <input type="button" value="done"onclick="write_name();">
    </form>
 /body>

</title>

现在,当我输入有效负载“>< img src = x onerror = prompt(404)>”时,我会收到XSS的提示.那么我该如何纠正呢?

任何人都可以检查主机,尝试修补错误,并给我一个理由?

解决方法

您可以对输入进行HTML编码,使其对XSS安全.
添加功能
function escapeInput(input) {
    return String(input)
            .replace(/&/g,'&amp;')
            .replace(/"/g,'&quot;')
            .replace(/'/g,'&#39;')
            .replace(/</g,'&lt;')
            .replace(/>/g,'&gt;');
}

并编码用户输入:

<script>
function write_name(){

    var welcome_parra = document.getElementById('welcome');
    var name =  document.getElementById('name');
    welcome_parra.innerHTML = "welcome " + escapeInput(name.value);
}
</script>
原文链接:https://www.f2er.com/js/150468.html

猜你在找的JavaScript相关文章