簡體   English   中英

記住我復選框

[英]Remember me checkbox

我有一個具有用戶登錄表單的winform應用程序。 我使用3個參數將用戶的登錄信息存儲在數據庫中:用戶名,哈希密碼,鹽:

salt = random string that will be stored in database for every user
hashed password = MD5(MD5(inputPassword) + MD5(salt))

我想在我的登錄表單中有一個名為“ Remember me復選框,即當用戶輸入正確的信息並進行檢查時,下次用戶打開程序時,將自動輸入其用戶信息,用戶只需單擊login按鈕即可。 。

我無法直接保存輸入的密碼,下次用它填充密碼textBox ,因為我知道有些軟件可以像這樣讀取textBox並且它不安全。

題:

  1. 如何在不保存用戶密碼的情況下做到這一點?

  2. 如果需要保存一些信息,如何對其進行加密?

  3. 是否需要更改我的安全策略?

請注意,這是為客戶端創建的客戶端/服務器應用程序和登錄表單。

您可以將密碼的哈希值保存在本地數據庫中,並且可以有一個隱藏的復選框,它告訴您您已經填充了已經哈希的數據庫中的信息,並且在進行身份驗證時不需要哈希密碼值再次。

編輯如果用戶嘗試手動輸入密碼,則可以清除文本框值並更改復選框的選中值,以便您現在知道該值不是哈希值。

據我了解,如果您想remember me功能,則應該(必須)以任何形式存儲密碼以驗證用戶身份。

一種方法是在您的產品中具有2個功能。 一個擁有Hash ,它將存儲在數據庫中,我想您當前正在使用它。 除此之外,還具有加密/解密功能。 remember me的復選框時,只需將加密值保存在您的app.config文件中即可。 現在,當用戶再次打開應用程序時,請檢查加密的密碼並解密以驗證用戶身份。

用戶dbw剛剛發布了我的另一種方法:)

希望能幫助到你。

恕我直言,這無法完成。 如果要在數據庫中加密/散列/加鹽並保存密碼,那么您將無法真正以純文本形式恢復密碼。

當然,您可以欺騙用戶(我將告訴您如何操作),但是需要定義您希望用戶執行的操作:

  • 即使用戶要求“記住我”,也要再次(每次)至少輸入一次密碼。 這很容易做到,只需檢索用戶ID並將密碼框保留為空白即可。 沒有技巧 干凈利落。 甚至Google都為他們的網站這樣做。
  • 現在欺騙時間。 讓用戶無需密碼即可輸入應用程序,而只需輸入用戶名即可。 您只需在密碼框中輸入一些默認值即可(用戶會認為實際上已檢索到密碼,但是您將進行編程,以使每當選擇“記住我”選項時,您都將自動填寫此信息)並讓用戶離開輸入。但這不是一個好的選擇,因為使用該系統的任何人都可以登錄到您的應用程序。 您將必須根據安全要求撥打電話。

Windows上有此功能。 DataProtector和ProtectedData類可用於基於計算機信息加密二進制數據。 您可以將加密范圍指定為“基於用戶”或“基於系統”,這可以派上用場。

  1. 如果您認為更好,則只能序列化登錄令牌信息,而不能序列化用戶憑據。

  2. 您只需加密序列化信息並將其存儲在所需的任何位置。 並在啟動時使用它解密並反序列化。

  3. 我想是的,是的。

您可以在此處查看它們:

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.dataprotector?view=netframework-4.7.2

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.protecteddata?view=netframework-4.7.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM