您当前的位置: 首页 >  c#

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

你的密码已泄露!使用C#阻止弱密码

寒冰屋 发布时间:2021-07-04 17:42:54 ,浏览量:0

虽然,我们为了安全考虑,在注册用户时会检查密码规则,避免弱密码,比如百度的注册页面: 

图片

但是,现在的黑客也不会傻到用穷举的办法生成密码去攻击网站,更常用的方式是使用已泄露密码生成的字典。

那这些字典从哪来的?

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 _logger;
private readonly IPwnedPasswordsClient pwnedPasswords;

public WeatherForecastController(ILogger logger, 
IPwnedPasswordsClient pwnedPasswords)
{
    _logger = logger;
    this.pwnedPasswords = pwnedPasswords;
}

[HttpGet]
public async Task GetAsync(string password)
{
    if (await pwnedPasswords.HasPasswordBeenPwned(password))
    { 
        return "弱密码";
    }

    return "强密码";
}

图片

结论

由于泄露密码随时在增加,建议在登录时也加上弱密码检测。

一旦发现密码属于已泄露的,则跳转到修改密码页面,要求用户重新设置密码。

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.1521s