2017-01-02 23 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我真的不在這裏加密東西。我完全將它們轉換爲哈希,這是無法恢復的。所以無論如何,這是完全安全的。 –