你的密码已泄露!使用C#阻止弱密码
雖然,我們為了安全考慮,在注冊用戶時會檢查密碼規則,避免弱密碼,比如百度的注冊頁面:?
但是,現在的黑客也不會傻到用窮舉的辦法生成密碼去攻擊網站,更常用的方式是使用已泄露密碼生成的字典。
那這些字典從哪來的?
HIBP(have i been pwned)
我知道的,可以得到這些數據的最大網站是HIBP(https://haveibeenpwned.com/),上面提供了大量已泄露網站的信息,連FBI都向它提供數據:?
從網站提供的被泄露網站列表上看,已經有多家國內公司數據上榜,某知名網站也在列:?
網站上還可直接檢查你的密碼是否已經泄露,我們測試一個符合百度密碼規則的看看:?
可以看到有多少人和你設一樣的密碼的了!囧
PwnedPasswords.Client NuGet包
網站也提供了API(https://haveibeenpwned.com/API/v3)用于執行檢查操作。
而.Neter可以直接使用NuGet包PwnedPasswords.Client來調用API。
引用PwnedPasswords.Client NuGet包后,在Startup.cs文件的ConfigureServices方法中加入下列代碼:
services.AddPwnedPasswordHttpClient(minimumFrequencyToConsiderPwned:?1000);minimumFrequencyToConsiderPwned表示泄露次數超過此設置的才算弱密碼。
使用HasPasswordBeenPwned檢查密碼是否已經泄露:
private?readonly?ILogger<WeatherForecastController>?_logger; private?readonly?IPwnedPasswordsClient?pwnedPasswords;public?WeatherForecastController(ILogger<WeatherForecastController>?logger,? IPwnedPasswordsClient?pwnedPasswords) {_logger?=?logger;this.pwnedPasswords?=?pwnedPasswords; }[HttpGet] public?async?Task<string>?GetAsync(string?password) {if?(await?pwnedPasswords.HasPasswordBeenPwned(password)){?return?"弱密碼";}return?"強密碼"; }結論
由于泄露密碼隨時在增加,建議在登錄時也加上弱密碼檢測。
一旦發現密碼屬于已泄露的,則跳轉到修改密碼頁面,要求用戶重新設置密碼。
如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!
總結
以上是生活随笔為你收集整理的你的密码已泄露!使用C#阻止弱密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 考虑用Task.WhenAll
- 下一篇: 生产力提升! 自己动手自定义Visual