如何在表单提交中拦截和更改密码字段值?

时间:2012-11-29 17:03:52

标签: javascript jquery html

我正在尝试在提交表单之前将密码哈希应用于所有密码字段。到目前为止我所拥有的是......

$("#loginform").submit(function(e) {
    e.preventDefault();
    $('input[type=password]').each(function(){
        console.log($.sha256($(this).val())) //Hash password
        //Set password back
    });
    return true;
});

...将拦截提交并散列密码,但我无法使用常规方法替换输入框中的明文密码。

我知道如何使用隐藏的输入等来执行此操作,但我将此应用于已经具有相当可靠的登录结构的站点,因此我希望将HTML修改降至最低。

谢谢:)

1 个答案:

答案 0 :(得分:1)

如果客户端哈希的目的是保护密码通过不安全的连接(HTTP),请确保使用盐和随机“挑战”。

像这样:

response = sha256(挑战+ sha265(盐+密码))

服务器知道挑战,盐和sha265(盐+密码)的答案,然后它可以验证响应。

你需要使用salt +密码来避免彩虹攻击,以及防止重放攻击的响应/挑战。

更好的方法是使用SSH;)