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
.
Доступні опції
Дата оновлення перекладу 2023-09-24
groups
тип: array
| string
за замовчуванням: null
Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.
message
тип: string
за замовчуванням: Цей пароль було скомпроментовано у витоку даних і не має використовуватися. Будь ласка, використайте інший пароль.
Повідомлення за замовчуванням відображуване, якщо пароль було скомпроментовано.
Дата оновлення перекладу 2024-05-29
payload
тип: mixed
за замовчуванням: null
Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.
skipOnError
тип: boolean
за замовчуванням: false
Коли HTTP-запит, зроблений до API haveibeenpwned.com
, зазнає невдачи за будь-якої
причини, викликається виключення (помилка валідації не відображається). Встановіть цю
опцію як true
, щоб не викликати виключення і вважати пароль валідним.
threshold
тип: integer
за замовчуванням: 1
Це значення визначає скільки разів пароль мав фігурувати у публічному витоку даних,
щоб вважати його скомпроментованим. Уважно подуймате перед тим, як встановлювати цю
опцію у вище значення, так як це знизить безпеку вашого додатку.