square1 / pwned-check
验证密码变更是否与已知的受损密码相匹配
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2024-09-15 17:05:09 UTC
README
PHP工具类,用于检查给定的密码是否为已知的受损密码,使用由Troy Hunt提供的Pwned Passwords服务。
安装
通过Composer
$ composer require square1/pwned-check
用法
use Square1\Pwned\Pwned; use Square1\Pwned\Exception\ConnectionFailedException; $password = 'password1'; $pwned = new Pwned(); // Has password ever been compromised? $compromised = $pwned->hasBeenPwned($password); // (bool) true // Has password appeared in more than 5 compromised datasets? $compromised = $pwned->hasBeenPwned($password, 5); // Don't allow remote server to hang for over 2 seconds try { $pwned = new Pwned(['remote_processing_timeout' => 2]); $compromised = $pwned->hasBeenPwned($password); } catch (ConnectionFailedException $e) { // Connection has timed out.. }
选项
类行为可以通过多种构造函数选项进行修改。
常见问题解答
如何确定一个密码是“已知的受损密码”?
Pwned Passwords服务由Troy Hunt提供,是一个优秀的资源,它汇总了在已知数据泄露中发现的所有密码。该API允许我们检查密码是否出现在以前的数据泄露中,以及它出现的频率。频率使我们能够决定在判断密码是否受损时有多严格。例如,abcd1234
可能在数据泄露中出现334,000次,而totallyuniqueandrandompass1234
可能只出现一次。根据您的用例,您可能只希望将广泛受损的密码列入黑名单。频率计数使我们能够做到这一点。
将密码发送到服务不是安全问题吗?
Pwned密码API允许进行范围查询。这涉及到在您的应用程序中使用此库对密码进行哈希处理,并将部分内容发送到API。API返回一组密码哈希(以及每个密码哈希的频率计数)。然后可以将这些与完整的密码哈希进行匹配,而完整的密码哈希永远不会离开应用程序。Cloudflare与Troy紧密合作设计了此API,并在此博客文章中详细介绍了此方法。
如果API服务器响应缓慢,我的应用程序会遇到问题吗?
典型的API响应非常快 - 请阅读这里的文章。然而,可能会出现连接问题或其他性能问题。为了在这些情况下保护您的应用程序,您可以将connection_timeout
和remote_processing_timeout
值设置为。这些是在终止cURL连接之前等待的秒数以及连接后的等待时间。如果由于达到这些超时之一而终止服务调用,将抛出Square1\Pwned\Exception\ConnectionFailedException
。
API结果是否被缓存?
此代码旨在与框架无关,因此缓存留给您的应用程序层。
测试
$ composer test
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。