0

我在让密码散列与 jQuery 验证引擎一起工作时遇到问题。问题是我似乎无法散列给定的密码。

这就是我到目前为止所拥有的。

    <script>
    jQuery(document).ready( function() {
    jQuery("#form").validationEngine('attach', 
    {onValidationComplete: function(form, status){
        if (status == true) {
             $("form#form").bind('submit', function(e) {
                  e.preventDefault();
             });

             function formhash(form, password) {
               var p = document.createElement("input");
               form.appendChild(p);
               p.name = "p";
               p.type = "hidden";
               p.value = hex_sha512(password.value);
               password.value = "";
               form.submit();
              }
         }
     }  
    })
    };
    </script>

通过在提交后运行处理脚本,我可以找到并使用未散列的密码,但这对我来说还不够好。

我究竟做错了什么?

编辑:我通过隔离函数(formhash)应用了更多的javascript和一个额外的“背景验证”并放入一个单独的文件中,添加了 onsubmit="return validate(this);" 在表单标题中。它不是那么漂亮,但它似乎可以解决问题。

不过,仍然欢迎任何有关改进的建议。

    <script type="text/javascript"> 
    function validate(form) {
    var reason = "";

    reason += validatePassword(form.password);

    if (reason != "") {
    return false;
    }
    formhash(form, form.password)
    return true;
    }

    function validatePassword(fld) {
    var error = "";

    if (fld.value == "") {
       error = "";
    }
    return error;
    }
    </script>
4

1 回答 1

0

有点晚了,但是我有同样的问题,没有找到答案,所以我想分享一下我解决它的方法:

function reghash(form, password, confirmation) {
 var p = document.createElement("input");
 form.appendChild(p);
 p.name = "p";
 p.type = "hidden";
 p.value = hex_sha512(password.value);
 password.value = "123456";
 confirmation.value = "123456"; }

我正在form.submit();从此函数中删除并使用onclick提交按钮调用该函数。通过简单地匹配 jquery 表单验证中允许的最小长度,我将密码和确认更改为安全值。这样验证功能不会阻止提交表单。

于 2015-06-09T22:22:00.717 回答