有没有可以验证html的Javascript库?

时间:2018-08-21 17:08:17

标签: javascript html validation

我想要得到的非常简单:我的网站上有一个文本框,可以使用html,当我按下“发送”按钮时,该文本框中的值将发送到网站。但是有时用户会访问该网站,编写html并忘记关闭该标签,例如,完全弄乱了我的网站。 为了解决此问题,我所需要的就是一个验证器,当单击该按钮时,它将检查所写的内容,并检查是否有不正确的内容,并提出一种解决方法来纠正html问题。 我见过像https://validator.w3.org/docs/api.html这样的平台可以完全满足我的需求,但是我可以在自己的网站上使用它吗?

我试图用Java脚本自己做一些事情,但这非常复杂并且存在很多问题。

可以请人帮我吗?

1 个答案:

答案 0 :(得分:0)

第一件事。如果我未能指出接受您用户的原始HTML通常来说,不是一个好主意™

不正确地执行此操作(这是正确执行的极其困难的任务),这会使您的网站和用户面临许多漏洞。您可以在https://html5sec.org/上查看它们的部分列表(我说是“部分”,因为它们仅列出“已知”攻击向量)。 a seemingly-unrelated, but definitely semi-related question有很多好的答案,我强烈建议您全部阅读。

  

“但是@Pete!”,我听到你在哭,“我的用户值得信赖。他们不会试图点击劫持我的其他用户,或者进行其他恶意或不愉快的事情!”

您可能会因为所有使用您的网站的人都不是恶意软件或will even be using a browser to submit HTML to your site(因此请不要忘记对服务器端进行验证和清除)而遭受欺骗。

再次,您可能不会因此而受骗,您的用户群只对网站提交安全的HTML感兴趣。也许您已经考虑并实施了防弹客户端和服务器端验证和清理例程。我不知道您的确切情况,也不会假装(尽管我知道这里涉及的概率对您有利)

考虑到上述所有情况,如果您仍然坚持允许用户编写原始HTML并将其提交到您的网站,请考虑:

您还可以只将用户的HTML转换为DOM元素(允许浏览器将HTML解析为实际的DOM元素),然后将[解析的] HTML字符串取回:

window.addEventListener('load', function () {
    var textarea = document.getElementById('unsafe-html');
    var button = document.getElementById('get-unsafe-html');
    var getUnsafeHtml = function getUnsafeHtml() {
        var div = document.createElement('div');
        div.innerHTML = textarea.value; // parses HTML to DOM elements
        return div.innerHTML; // gets it back in a string form.
    }
    
    
    button.addEventListener('click', function (e) {
        var unsafeHtml = getUnsafeHtml();
        console.log(unsafeHtml);
        
        e.preventDefault();
        return false;
    }, false);
}, false);
<textarea id="unsafe-html" rows="5">
    <p>If you <strong>insist</strong>, <i>then</i> this technique can be used as well.</p>
</textarea>
<button id="get-unsafe-html">Get the HTML</button>

这将确保标记是用户期望的方式,但是它将确保您没有不匹配的标记(因为标记将被自动关闭或删除) ,具体取决于浏览器)。