NotCompromisedPassword
Дата обновления перевода 2023-09-25
NotCompromisedPassword
Валидирует, что заданный пароль не был скомпроментирован, проверяя, чтобы он не был включен ни в какие нарушения публичных данных, отслеживаемых haveibeenpwned.com.
??????????? ? | ???????? ??? ?????? |
????? | NotCompromisedPassword |
????????? | NotCompromisedPasswordValidator |
Базовое использование
Следующее ограничение гарантирует, что свойство rawPassword
класса
User
не содержит скомпроментированный пароль:
1 2 3 4 5 6 7 8 9 10
// src/Entity/User.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class User
{
#[Assert\NotCompromisedPassword]
protected string $rawPassword;
}
Для того, чтобы провести валидацию пароля, это ограничение не отправляет необработанное
значение пароля API haveibeenpwned.com
. Вместо этого, оно следует безопасному
процессу, известному, как валидация пароля k-anonymity.
На практике, необработанный пароль хешируется с использованием SHA-1, и
отправляются только первые байты хеша. Затем, API haveibeenpwned.com
сравнивает эти байты с хешами SHA-1 всех "слитых" паролей, и возвращает
список хешей, начинающихся с тех же байтов. Таким образом ограничения могут
проверять, был ли пароль скомпроментирован, не раскрывая его полностью.
Например, если пароль - test
, весь хеш SHA-1 будет
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
, но валидатор отправляет в
API haveibeenpwned.com
только a94a8
.
See also
При использовании этого ограничения внутри приложения Symfony, определите опцию
not_compromised_password ,
чтобы избежать HTTP-запросов в окружениях dev
и test
.
Доступные опции
groups
type: array
| string
default: null
It defines the validation group or groups of this constraint. Read more about validation groups.
message
тип: string
по умолчанию: Этот пароль был продемонстрирован при утечке данных, он не должен быть использован. Пожалуйста, используйте другой пароль.
Сообщение отображённое по умолчанию, если пароль был скомпроментирован.
Дата обновления перевода 2024-07-25
payload
тип: mixed
по умолчанию: null
Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.
Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.
skipOnError
тип: boolean
по умолчанию: false
Когда HTTP-запрос к API haveibeenpwned.com
терпит неудачу по какой-либо
причине, вызывается исключение (ошибка валидации не отображается). Установите
эту опцию как true
, чтобы не вызывать исключение, и считать пароль валидным.
threshold
тип: integer
по умолчанию: 1
Это значение определяет количество раз, которое пароль мог быть "слит" публично, чтобы считать его скомпроментированным. Хорошо подумайте, прежде, чем устанавливать эту опцию в более высокие значения, так как это может нарушить безопасность вашего приложения.