【问题标题】:How to globally overwrite submit on html form in javascript如何在javascript中全局覆盖html表单上的提交
【发布时间】:2021-01-02 14:16:38
【问题描述】:

我今天为此苦苦挣扎了一整天,我发现了这个http://greasemonkey.win-start.de/patterns/override-method.html,但它的准确率只有 50%,所以我决定分享这个解决方案,因为它可能对 csrf 实现有用。

【问题讨论】:

    标签: javascript forms submit csrf


    【解决方案1】:

    任何类型的表单提交解决方案:

    // form.submit() js调用代码https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit

    HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
         
    function newSubmit() {
        //add code here
    
        this._submit();
    }
    
    HTMLFormElement.prototype.submit = newSubmit;
    

    //点击按钮类型提交代码https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit

    function newRequestSubmit(submitter) {       
        if (submitter.srcElement.tagName === "FORM") {
         // add code here
        }
    }
    
    document.body.addEventListener("submit", newRequestSubmit);
    

    对于 csrf 实现,通过在标头中设置 csrf,覆盖 XMLHttpRequest.prototype.open 在 ajax 请求的情况下也很有用:https://stackoverflow.com/a/56499250/7309871

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多