你的密码已泄露!使用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 "强密码";
}

图片

结论

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值