2017-01-02 25 views
-4

这是我一直在使用来验证我的形式,到目前为止代码:JS简单但安全的登录?

<input type="text" id="usr"/> 
<input type="password" id="pwd"/> 

脚本:

if (usr.value == "blablahusername") { 
if (pwd.value == "blahblahpassword") { 
    //do stuffs 
} 
} 

此代码的工作,但它是不安全的,你只需要检查元素(铬)找到密码是什么。所以,我正在寻找一种不复杂,更安全的方式来做到这一点。

+0

这是不可能没有的服务器 – epascarello

+1

为什么你需要做到这一点只使用客户端的JavaScript?这是可能的,但是没有太多好的理由。 – Ryan

+0

认证方案很复杂,@redFIVE – IamGuest

回答

-2

对于刚开始的安全性来说,您可以使用某种散列算法。 SHA-1基本上是体面的安全标准,你可以使用它来转换客户端的东西。

考虑以下代码:

String.prototype.hashCode = function() { 
 
    var hash = 0, i, chr, len; 
 
    if (this.length === 0) return hash; 
 
    for (i = 0, len = this.length; i < len; i++) { 
 
    chr = this.charCodeAt(i); 
 
    hash = ((hash << 5) - hash) + chr; 
 
    hash |= 0; // Convert to 32bit integer 
 
    } 
 
    return hash; 
 
}; 
 
$(function() { 
 
    var username = "admin"; 
 
    var password = "68170072"; 
 
    $("#check").click(function() { 
 
    if ($("#username").val() == "admin" && $("#password").val().hashCode() == password) 
 
     alert("Perfect"); 
 
    else 
 
     alert("Wrong"); 
 
    return false; 
 
    }); 
 
});
* {font-family: monospace;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Username: <input type="text" id="username" /><br /> 
 
Password: <input type="password" id="password" /><br /> 
 
<a href="#" id="check">Check</a> 
 
<p>Username: admin, Password: letmein</p>

我在这里使用sha1。我们可以在这里使用任何像样的算法

注:的实施并没有在协议栈片断很好地工作。但这是关键。

  1. 取盐。
  2. 使用salt将密码转换为散列。
  3. 以上文字是单向转换。
  4. 复制它的最终形式并嵌入到页面中。
  5. 只有正确的密码经过该过程后,才会转换为散列。
  6. 将散列与保存的密码进行比较。

只是我的几分钱。

看到类似的东西:Generate a Hash from string in Javascript/jQuery

+0

是的,但是如果在客户端发生这种情况,您可以一直删除条件和“alert”(“Perfekt”)。如果您想要客户端身份验证,您真正必须做的是加密内容(或“/ do stuffs”)。 – Bergi

+0

@IamGuest更新。 –

+0

@Bergi我真的不在这里加密东西。我完全将它们转换为哈希,这是无法恢复的。所以无论如何,这是完全安全的。 –