検索

ホームページ  >  に質問  >  本文

javascript - 前端md5加密密码时浏览器的自动完成功能的问题

我在前端加密密码的方式是:

$("form").submit(function() {
    $("#password").val($.md5($("#password").val()));
    return true;
});

但是这样的话浏览器就会自动保存加密后的密码,等到下一次登录的时候会变成相当于两次md5加密……这个该怎么解决?

伊谢尔伦伊谢尔伦2896日前756

全員に返信(8)返信します

  • 大家讲道理

    大家讲道理2017-04-10 12:50:13

    这个整过, 和 @瓶子 的答案类似, 不过有细节不一样.

    注意, 真正提交的是隐藏的 加密的password1; 而原来的password不会提交(因为设置了disabled=true, 否则明文password还是会被上传!), 但是浏览器会记住原来的password. 在firefox中测试正常.

    <form>
      <input type="password" name="password" id="password"/>
      <input type="hidden" name="password1" id="password1"/>
      <input id="s" type="submit" value="Submit"/>
      </form>
    <script>
    $(function(){
      $("form").submit(function() {
        var v=$.md5($("#password").val());
        $("#password1").val(v);
        $("#password").attr("disabled", "true");
        return true;
      });
    });
    </script>
    

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-10 12:50:13

    你这样加密后有神么效果呢?不在网络传输明文密码?但是别人可以直接md5密码直接向后端发送啊? 我的方式是用RSA用公钥加密,服务端用私钥解密。 此外@brayden 的方法是正确的

    返事
    0
  • PHPz

    PHPz2017-04-10 12:50:13

    为什么要用js加密呢?禁用js怎么办

    返事
    0
  • 怪我咯

    怪我咯2017-04-10 12:50:13

    建议你先了解一下浏览器的原理 可以查看这篇文章,有详细介绍 http://www.qixing318.com/article/the-browsers-rendering-principle-introduction.html
    接下来可以看一下这篇关于前端加密的文章:
    http://www.qixing318.com/article/how-the-browser-end-encryption.html

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-10 12:50:13

    限制密码长度在31位,然后看到32位的就知道是md5过的密码了…… 如果觉得31位太短了就把md5后的密码复制几遍,128啦,256啦,反正能认出来就行了。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-10 12:50:13

    另外加一个隐藏的input,计算的md5结果存到其中,服务器接收该隐藏input内容作为密码

    返事
    0
  • 阿神

    阿神2017-04-10 12:50:13

    <input type="password" autocomplete="off" /> <!--关闭表单记住功能 -->
    <form autocomplete="off"></form> <!-- 禁用整个form -->
    

    返事
    0
  • 黄舟

    黄舟2017-04-10 12:50:13

    好像我理解提问者的问题了= = 你是把值动态赋值的,然后提交的表单。这样浏览器肯定会能记住MD5后的密码的。其实吧,你要想不让浏览器记住。= =亲,请尝试ajax……而不是动态赋值后还是提交表单。

    返事
    0
  • キャンセル返事