Güvenlik Ayarları

1.6k görüntülenme Markdown

Yönetim paneline erişimi, şifre kurallarını ve yasaklı listeleri yöneten beş uç.

Genel Bakış

Bu beş uç kurulumun kapısını tutar. Yönetim panelinin nerede olduğu, oraya kimin ulaşabildiği, şifrelerin gücü ve kimlerin hiç kaydolamayacağı.

İkisi kendinizi dışarıda bırakabilir: klasör adı panelin adresini değiştirir, adres kısıtı erişimi daraltır. Biri de geri alınamaz ve herkesi etkiler. Bu makale büyük ölçüde o üçünü anlatır.

Referans

Genel Ayarları Getirme

get/api/v1/admin/settings/security/general
Settings/GetSecurityGeneral admin

Panelin nerede olduğunu, kimin erişebildiğini ve şifre kurallarını döndürür.

Dönen alanlar data — 7
admin_folderstringYönetim panelinin bulunduğu klasör. Adresin gizli parçasıdır; bir tür kimlik bilgisi gibi davranır.
admin_ip_restrictionstringPanele erişebilecek adresler. Boşsa her yerden erişilebilir.
password_lengthintŞifrelerin en az kaç karakter olacağı.
password_charactersstring[]Şifrede bulunması zorunlu karakter sınıfları.
password_reset_cycleintŞifrelerin kaç günde bir yenileneceği. Sıfır süresiz demektir.
clickjacking_protectionintPanelin başka bir sayfaya gömülmesini engeller.
clickjacking_protection_whiteliststringGömmeye izin verilen adresler.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/settings/security/general' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/settings/security/general', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/security/general');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Yonetim klasoru adi bir tur GIZLI BILGIDIR: kendi log'unuza yazmayin, disariya vermeyin.
$sec = Api::Settings()->GetSecurityGeneral()['data'];

Genel Ayarları Yazma

put/api/v1/admin/settings/security/general
Settings/UpdateSecurityGeneral admin kilitlenme riski

Gönderdiğiniz ayarları uygular. Klasör adını değiştirmek panelin adresini değiştirir.

Gövde 7
admin_folderstringYönetim panelinin klasörü. Boş olamaz, öngörülebilir bir ad olamaz ve var olan bir dosya ya da klasörle çakışamaz.
admin_ip_restrictionstringPanele erişebilecek adresler.
password_lengthintŞifrelerin en az uzunluğu.
password_charactersstring[] | stringZorunlu karakter sınıfları. Liste bütün olarak yazılır.
password_reset_cycleintŞifre yenileme aralığı, gün olarak.
clickjacking_protectionintGömülmeye karşı korumayı açar.
clickjacking_protection_whiteliststringGömmeye izin verilen adresler.
Dönen alanlar data — 7
dataobjectGüncel ayarlar. Okuma ucuyla aynı şekildedir.
——Klasör adı değiştiyse yanıt yeni klasörü taşır. Panelin adresini buradan okuyun; gönderdiğiniz adın olduğu gibi kabul edildiğini varsaymayın.
Hatalar 3
admin_folder_invalid422Klasör adı kabul edilmedi.
admin_folder_exists422O adda bir dosya ya da klasör zaten var.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/settings/security/general' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"password_length":10,"password_reset_cycle":90,"clickjacking_protection":1}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/security/general', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    password_length: 10,
    password_reset_cycle: 90,
    clickjacking_protection: 1,
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/security/general');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'password_length'      => 10,
        'password_reset_cycle' => 90,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Klasor adini degistirmek panelin ADRESINI degistirir; yeni adresi yazmadan gondermeyin.
// Adres kisiti da kilitler: kendi adresinizi listede birakin.
Api::Settings()->UpdateSecurityGeneral([
    'admin_ip_restriction' => $myAddress,
    'password_length'      => 10,
]);

Yasaklı Listeleri Getirme

get/api/v1/admin/settings/security/prohibited
Settings/GetProhibited admin

Kayıt sırasında reddedilen alan adlarını, adresleri, numaraları ve kelimeleri döndürür.

Dönen alanlar data — 5
block_temporary_emailintGeçici e-posta servislerinden kaydı engeller.
domain_liststring[]Yasaklı alan adları.
email_liststring[]Yasaklı e-posta adresleri.
gsm_liststring[]Yasaklı telefon numaraları.
word_liststring[]Yasaklı kelimeler.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/settings/security/prohibited' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/settings/security/prohibited', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/security/prohibited');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$prohibited = Api::Settings()->GetProhibited()['data'];

Yasaklı Listeleri Yazma

put/api/v1/admin/settings/security/prohibited
Settings/UpdateProhibited admin listeler bütün yazılır

Yasaklı listeleri yazar. Gönderdiğiniz liste eskisinin yerine geçer.

Gövde 5
block_temporary_emailintGeçici e-posta servislerinden kaydı engeller.
domain_liststring[] | stringYasaklı alan adları. Dizi ya da satır satır metin.
email_liststring[] | stringYasaklı e-posta adresleri.
gsm_liststring[] | stringYasaklı telefon numaraları.
word_liststring[] | stringYasaklı kelimeler.
Dönen alanlar data — 5
dataobjectGüncel listeler. Okuma ucuyla aynı şekildedir.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/settings/security/prohibited' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"block_temporary_email":1,"domain_list":["example-spam.com"]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/security/prohibited', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    block_temporary_email: 1,
    domain_list: ['example-spam.com'],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/security/prohibited');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'block_temporary_email' => 1,
        'domain_list'           => ['example-spam.com'],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Tek alan adi EKLEMEK icin mevcut listeyi de gonderin; yoksa eskiler silinir.
$lists  = Api::Settings()->GetProhibited()['data'];
$domains = $lists['domain_list'];

$domains[] = 'example-spam.com';

Api::Settings()->UpdateProhibited(['domain_list' => $domains]);

Şifre Sıfırlamaya Zorlama

post/api/v1/admin/settings/security/force-reset-password
Settings/ForceResetPassword admin herkesi etkiler

Bütün kullanıcıları bir sonraki girişte şifrelerini yenilemeye zorlar.

Gövde —
——Gövde gerekmez, boş gönderin. Kapsam daraltılamaz; işlem bütün hesapları kapsar.
Dönen alanlar data — 1
appliedboolİşlem uygulandı mı. Kaç kullanıcının etkilendiğini söylemez.
Hatalar 2
force_reset_failed422İşlem uygulanamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/settings/security/force-reset-password' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/settings/security/force-reset-password', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/settings/security/force-reset-password');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bu istek TUM kullanicilari etkiler ve GERI ALINAMAZ: gövde ya da onay adimi yoktur.
// Yalnizca bir sizinti sonrasi gibi gercek bir gerekce varken calistirin.
Api::Settings()->ForceResetPassword();

Tuzaklar

Klasör adı panelin adresidir

Yönetim klasörünü değiştirmek dizini yeniden adlandırır: panel eski adresinde artık yoktur. Yeni adı bir yere yazmadan bu isteği göndermeyin. Ad boş olamaz, öngörülebilir olamaz ve var olan bir dosyayla çakışamaz. Bunlar hata verir. Yanlış ama geçerli bir ad ise hata vermez, paneli bulunamaz yapar.

Adres kısıtı sizi de kapsar

Panele erişimi adreslere göre kısıtlamak ayrım yapmaz: kendi adresinizi listeye koymazsanız bir sonraki denemede siz de dışarıda kalırsınız. Değişken adresli bir bağlantıdan çalışıyorsanız bu ayarı hiç kullanmamak daha güvenlidir.

Zorunlu sıfırlama herkesi etkiler

Bu uç gövde almaz, süzgeç almaz ve onay adımı yoktur. Çağırdığınız anda bütün kullanıcılar şifre yenilemeye zorlanır ve bu geri alınamaz. Yanıt kaç kişinin etkilendiğini bile söylemez. Gerçek bir gerekçe olmadan çalıştırmayın.

Yasaklı listeler bütün yazılır

Gönderdiğiniz liste eskisinin yerine geçer. Tek bir alan adı eklemek için önce mevcut listeyi okuyup üzerine eklemeniz gerekir. Yoksa biriktirdiğiniz bütün yasaklar tek bir istekle silinir ve bunu hiçbir hata bildirmez.

Klasör adı gizli bilgidir

Yönetim klasörünün adı adresin gizli parçasıdır ve bir tür kimlik bilgisi gibi davranır. Okuma ucundan aldığınız bu değeri kendi kayıtlarınıza yazmayın, hata mesajlarında göstermeyin. Sistem kendi hata kayıtlarında bile onu maskeler.

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.