代码之家  ›  专栏  ›  技术社区  ›  Canada

有没有什么方法可以在js中将sha512添加到这个php网页中,以使网站更加安全?

  •  0
  • Canada  · 技术社区  · 2 年前

    我正试图将sha512添加到一个页面中,以使网页更安全,从而使人们更难强行使用哈希来访问url婴儿车中的秘密

    js如下:

    
                      
         
          (function() {
            const GetPass = function() {
              var usrpass = document.getElementById("userPassword").value;
              const args = window.location.search;
              const urlprams = new URLSearchParams(args);
              var password = urlprams.get('password')
              var hash = sha256(usrpass)
              if (hash==password) {
                var info = urlprams.get('secret')
                var urle = atob(info)
                var sec = decodeURI(urle)
                const htm = sec.split("\n")
                htm.forEach(function (item, index) {
                  htm[index] = item + "<br/>"
                });
                var html = htm.join('')
                document.body.innerHTML = (html);
                document.title = 'reload to exit'
                document.cookie = ''
              } else {
                alert('Incorrect Password!')
              }
            };
            window.GetPass = GetPass;
          })();
    
        
    

    我尝试使用crypto sha512库,但我尝试的一个函数也出现了同样的错误

    1 回复  |  直到 2 年前
        1
  •  0
  •   RAllen    2 年前

    如果这个JS代码在用户的浏览器中保持原样,那么在这里破解和反向工程你的逻辑,并以同样的方式强行使用散列后的密码,是非常容易的。

    如果你想保护你的JS代码,你需要用一些模糊器/最小化器来模糊它。这可能会使黑客攻击更加困难,但不会太难。要使代码真正不可破解,需要花费大量的时间和精力,但仍然不能保证任何事情。

    只需将密码以明文形式从前端发送到后端,就像大多数主要网站(例如谷歌)所做的那样。

    为什么?不加密?

    因为如果一个用户只是一个用户,他们无论如何都不会试图破解你的密码加密,但如果有技术人员想破解你的口令逻辑,他们无论如何会在很短的时间内完成。

    因此,只要确保你的网站在传输过程中使用HTTPS来保护你的登录/密码,并防止“中间人”攻击,你就应该很好。