HTML和Javascript在client side上解釋。對於登錄目的而言,它是通常用於驗證憑證的服務器端代碼 - 僅僅因爲您已經知道這一事實 - 通過簡單的客戶端實現,您可以在源代碼中看到憑證,服務器端也是更容易處理,一旦你瞭解它,它對於進一步的開發更加靈活,它更加安全,並且它在這個任務中到處使用。
爲此,使用PHP,ASP,Ruby(或任何其他server side語言)是一個好主意。如果你不想這樣做,你需要讓用戶很難從源代碼中讀取憑證。
爲了做到這一點,您可以使用各種方法,如加密或obfuscation。密碼學強烈建議使用混淆,因爲它可以爲您的應用程序增加更多的安全性。混淆基本上意味着你改變源代碼的方式很難閱讀 - 你添加了編碼字符串的函數,這樣你的「密碼」就不會一見成效。然而,模糊處理總是可以被繞過,而且通常很容易使用一個好的調試工具。
所以,讓我們來看看密碼學。你在找什麼是使用one way hash functions。你有很多選擇 - MD5,SHA1,SHA256,...提供不同級別的安全性。 SHA256 implementation in Javascript是一個可以使用的例子。還有很多其他的庫和示例,所以只需使用Google並找到您喜歡的那個。
現在,該怎麼辦?假設你有sha256()函數接受一個字符串並將其散列作爲一個字符串返回。對於您擁有的每個用戶和密碼,您需要預先安裝字符串「user + password」的SHA256哈希值。
說,你希望你的用戶名是「Pedro」,這個帳戶的密碼是「MyPassword」。
您預先安排了「PedroMyPassword」的散列 - 例如,與with online hashing tool。你可以看到它的SHA256哈希是
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21
這個哈希值是你放入你的Javascript代碼。
當用戶輸入他們的用戶名和密碼時,可以在「用戶名+密碼」上調用sha256函數,並將其與預先安排的哈希值進行比較。
請注意,你必須選擇真正的強密碼,否則某些攻擊(如字典攻擊)將很容易使用來打破你的散列。
現在的問題是,您沒有指定,接下來要做什麼。例如,您可能希望將經過身份驗證的用戶重定向到下一頁,但在這裏您再次遇到同樣的問題 - 如果您在JavaScript中將代碼重定向到「secondpage.html」,則可能會跳過身份驗證並導航到第二個直接頁面。
你可以在這種情況下,做的是,你命名你的第二個頁面
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21.html
即用戶+通字符串的哈希值。在這個變體中,你根本不把哈希放在代碼中。 Web服務器只會爲所有未通過身份驗證的用戶返回錯誤404。例如,如果有人試圖用「佩德羅」和「123456」作爲密碼時,SHA256將
3bac31720fdd4619ebe2e8865ccc0dc87eb744f3f05f08c628bb9217a77e4517
,如果你重定向到
3bac31720fdd4619ebe2e8865ccc0dc87eb744f3f05f08c628bb9217a77e4517.html
它贏得不存在,因爲你的第二頁文件被稱爲
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21.html
您需要爲每個用戶/傳球組合創建這些第二頁。然後你可以把簡單的重定向代碼放到真正的第二頁上。
但要確保你使用的是HTTPS協議,否則,第二頁會經過加密線...
這一切都將正常工作,不過,我強烈建議你考慮服務器端的方式。
請提供正確的問題描述 – arch
我想你沒有得到我的問題。如果有人查看網頁來源,他可以輕鬆查看用戶名和密碼。我不想要這個頁面的國王 – user007
只需將java腳本放在名爲login.js的新JavaScript文件中,然後在調用vaidate函數時將值發送到java腳本。那麼Java腳本文件不會顯示在源代碼中 –