Hesap Güvenliği Kancaları

1.6k görüntülenme Markdown

Doğrulama, parola sıfırlama, çıkış ve erişimin on bir kancası.

Genel Bakış

Hesabın kimliğini koruyan her adım burada: e-posta ve telefon doğrulama, güvenlik sorusu, parola sıfırlama, giriş kodu ve çıkış.

İki kapı öne çıkar. Parola kapısı size ham parolayı verir; yalnız denetleyin. Erişim kapısı ise diğerlerinin tersi çalışır: dolu dönmek yerleşik denetimleri atlar.

Referans

E-posta değişimini izleme

actionuser.email_changed
AccountUsers doğrulanmış adres

Hesabın e-posta adresi değiştikten sonra çalışır. Yeni adres doğrulanmıştır.

Parametreler 3
$uidintHesabın sahibi.
$oldEmailstringÖnceki adres.
$newEmailstringYeni, doğrulanmış adres.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.email_changed', 10, function ($uid, $oldEmail, $newEmail) {
    // Eski adrese de haber verin: hesap ele gecirildiyse tek uyari yolu odur.
    Acme::alertOldAddress($oldEmail, $newEmail);
});

E-posta doğrulamasını izleme

actionuser.email_verified
AccountUsers doğrulama anı

Müşteri e-posta adresini doğruladıktan sonra çalışır.

Parametreler 1
$user_idintAdresi doğrulanan müşteri.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.email_verified', 10, function ($user_id) {
    Acme::unlockOnboarding($user_id);
});

Telefon doğrulamasını izleme

actionuser.phone_verified
AccountUsers uluslararası biçim

Müşteri telefon numarasını doğruladıktan sonra çalışır.

Parametreler 2
$uidintNumarası doğrulanan müşteri.
$phonestringDoğrulanan numara, uluslararası biçimde saklandığı hâliyle. Ülke kodu başındadır; yerel biçim beklemeyin.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.phone_verified', 10, function ($uid, $phone) {
    // Numara uluslararasi bicimdedir.
    Acme::enableSmsAlerts($uid, $phone);
});

Güvenlik sorusunun değişmesini izleme

actionuser.security_question_changed
AccountUsers daima giriş kimliği

Hesabın güvenlik sorusu kurulduğunda ya da kaldırıldığında çalışır.

Parametreler 2
$user_idintSorusu değişen üye. Bu her zaman oturumu açan kişidir: alt kullanıcı başkasının sorusunu değiştiremez.
$has_questionboolDoğruysa soru artık kuruludur; yanlışsa soru ve cevabı birlikte kaldırılmıştır.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.security_question_changed', 10, function ($user_id, $has_question) {
    // Kaldirma da bu kancadan gecer.
    if (!$has_question) Acme::warnWeakerRecovery($user_id);
});

Parola sıfırlama talebini izleme

actionuser.password_reset_requested
Auth iki hesap tipi

Bir parola sıfırlama talebi açıldığında çalışır. Hem müşteri hem yönetici hesapları buradan geçer.

Parametreler 3
$userIdintTalebin açıldığı hesap.
$typestringHesap tipi: member ya da admin. Yönetici sıfırlamaları çok daha kritiktir; ayrımı gözetin.
$emailstringTalebin yapıldığı adres; hesapla eşleştiği doğrulanmıştır.
Dönüş 1
voidDönüş yoksayılır. Dinleyicinizin dönüşü sıfırlama yanıtını değiştiremez.
Dinleyici
Hook::add('action:user.password_reset_requested', 10, function ($userId, $type, $email) {
    // Yonetici sifirlamasi cok daha kritik.
    if ($type === 'admin') Acme::alertSecurityTeam($userId, $email);
});

Çıkışı izleme

actionuser.logged_out
Auth oturum verisi önceden

Bir oturum kapandığında çalışır.

Parametreler 2
$dataarrayÇıkan kişinin oturum verisi, çıkıştan önce yakalanmış hâliyle. Oturum zaten yoksa boş gelir: kimliğe erişmeden önce bakın.
$typestringÇıkış tipi: admin ya da member.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.logged_out', 10, function ($data, $type) {
    // Oturum yoksa dizi BOS gelir.
    if (!($data['id'] ?? 0)) return;

    Acme::closeSession((int) $data['id'], $type);
});

Giriş kodunun gönderilmesini izleme

actionuser.login_code_issued
Auth kod geçilmez

Tek kullanımlık giriş kodu gönderildiğinde çalışır.

Parametreler 3
$userIdintKodun gönderildiği hesap: bir müşteri ya da yönetim paneline giriş yapan bir personel.
$channelstringTeslim kanalı.
$expiryintKodun geçerlilik bitişi. Kodun kendisi geçilmez, bilerek: dinleyiciye verilmesi onu ikinci bir yere yayardı.
Dönüş 1
voidDönüş yoksayılır; yanıtı değiştiremez.
Dinleyici
Hook::add('action:user.login_code_issued', 10, function ($userId, $channel, $expiry) {
    // Kodun kendisi bilerek gecilmez.
    Acme::noteLoginAttempt($userId, $channel);
});

Cihaza güvenilmesini izleme

actionuser.device_trusted
Auth güven jetonu geçilmez

Hesap, iki adımlı doğrulama ekranında "bu cihaza güven" kutusunu işaretleyip tarayıcı hatırlandığında çalışır.

Parametreler 4
$userIdintCihazın artık ait olduğu hesap.
$typestringHesap tipi: member veya admin.
$windowintGüvenin kaç gün süreceği.
$uastringTarayıcının ham User-Agent dizesi. Güven jetonu geçilmez: dinleyiciye vermek onu ikinci bir yere yaymak olurdu.
Dönüş 1
voidDönüş yoksayılır.
Dinleyici
Hook::add('action:user.device_trusted', 10, function ($userId, $type, $window, $ua) {
    Acme::securityLog('device_trusted', $userId, ['type' => $type, 'days' => $window]);
});

Cihaz güveninin kaldırılmasını izleme

actionuser.device_trust_revoked
Auth kayıtlar çoktan silinmiştir

Hesabın güvenilir cihazları kaldırıldığında çalışır: parola sıfırlama, iki adımlı doğrulamanın açılıp kapanması, kurtarma koduyla giriş, "her yerden çıkış" veya hesabın kendi listesinden kaldırma.

Parametreler 3
$userIdintGüveni kaldırılan hesap.
$typestringHesap tipi: member veya admin. Tip verilmeden yapılan toplu temizlikte boş gelir — bütün tipler gitmiştir.
$countintKaç cihazın kaldırıldığı; tekil kaldırma her zaman 1 geçirir.
Dönüş 1
voidDönüş yoksayılır; kanca çalıştığında kayıtlar zaten silinmiştir.
Dinleyici
Hook::add('action:user.device_trust_revoked', 10, function ($userId, $type, $count) {
    Acme::securityLog('trust_revoked', $userId, ['count' => $count]);
});

Parola sıfırlamayı durdurma

gateuser.password_reset
AdminUsers ham parola

Bir yönetici parolası sıfırlanmadan önce çalışır. Kendi parola politikanızı burada dayatırsınız.

Parametreler 3
$user_idintParolası sıfırlanan hesap.
$passwordstringYeni parolanın ham hâli. 🔴 Yalnız politika denetimi için: günlüğe yazmayın, kaydetmeyin, dışarı göndermeyin.
$bystringSıfırlamanın kaynağı.
Dönüş 1
mixedDolu bir dönüş engeller: metin ya da ileti taşıyan bir dizi kabul edilir. Boş dönüş devam ettirir.
Dinleyici
Hook::add('gate:user.password_reset', 10, function ($user_id, $password, $by) {
    // Ham parola: yalniz denetleyin, hicbir yere YAZMAYIN.
    if (strlen($password) < 16) return 'Yonetici parolasi en az 16 karakter olmali.';

    return null;
});

Müşteriyi kendi ekranınıza yönlendirme

gateuser.full_access
website yönlendirme döndürür

Müşteri panele girdiğinde, yerleşik erişim denetimlerinden önce çalışır: eksik alan, kişisel veri onayı ve fatura bilgisi kontrollerinin öncesindedir.

Parametreler 1
$idintGiriş yapan müşteri.
Dönüş 1
string|null🔴 Diğer kapıların tersi çalışır: dolu bir adres döndürmek müşteriyi oraya yönlendirir ve yerleşik denetimlerin tamamını atlar. Yani buradan koşulsuz bir adres döndürmek, eksik alan ve onay kontrollerini kalıcı olarak devre dışı bırakır. Koşulunuzu dar tutun ve kalan durumda boş dönün.
Dinleyici
Hook::add('gate:user.full_access', 10, function ($id) {
    // Dolu donus YERLESIK DENETIMLERI ATLAR: kosulu dar tutun.
    if (Acme::mustAcceptTerms($id)) return Utility::AppAdress() . '/acme/terms';

    return null;
});

Tuzaklar

Erişim kapısı diğerlerinin tersi çalışır

Öteki kapılarda dolu dönüş engeller; erişim kapısında dolu dönüş yönlendirir ve yerleşik denetimlerin tamamını atlar. Koşulsuz bir adres döndürmek, eksik alan ve rıza kontrollerini kalıcı olarak devre dışı bırakır.

Parola kapısına ham parola gelir

Parola sıfırlama kapısı yeni parolayı düz metin verir; politika denetimi için gereklidir. Onu günlüğe yazmak, saklamak ya da dışarı göndermek, tam da korumaya çalıştığınız şeyi sızdırır.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.