Şəxsi şəbəkə ilə heç vaxt danışmayan ictimai forma yenə də şəxsi şəbəkənin qiymətləndirməli olduğu məlumat yaradır. Tunel yalnız kimin kimlə əlaqə saxladığını dəyişir. Yükləmədən sonrakı hər şey idxal qərarıdır və şəxsi tərəfə aiddir. Bu icmal bir göndərişi brauzerdən daxili qeydə qədər izləyir.

Göndərişin düşdüyü yerdən başlayın

Brauzer ictimai son nöqtəyə göndərir, o da nəzarətli qəbul anbarına sətir yazır və təsdiqdən başqa heç nə qaytarmır. Həmin anbar təhvil nöqtəsidir və ictimai qatın yaza biləcəyi yeganə yer olmalıdır. Xam yükü orada dəyişmədən saxlayın, gəldiyi vaxt və sabit qeyd identifikatoru ilə birlikdə.

Sonra şəxsi işçi tunel vasitəsilə gözləyən sətirləri çəkir və hər biri ilə nə edəcəyinə qərar verir. O, öz kimliyi altında işləyir və bu, növbəti bölmənin mövzusudur.

curl --silent --fail \
  --cert /etc/importer/client.crt --key /etc/importer/client.key \
  "https://intake.corp.internal/api/pending?limit=20" \
  -o /var/lib/importer/pending.json

İdxalçıya yalnız lazım olan səlahiyyəti verin

İctimai veb prosesi ilə daxili tətbiqə yazan kimlik iki fərqli subyekt olmalıdır. İctimai server yalnız forma məlumatı çatdırmalı olduğu üçün daxili idarəetməyə ehtiyac duymur və hər iki tərəf üçün vahid ortaq hesab istənilən veb xətasını daxili yazıya çevirir. İşçiyə öz etimadnaməsini verin, onu tək idxal əməliyyatı ilə məhdudlaşdırın və hər idxalı hansı subyektin etdiyini qeyd edin. Bu ayrılıq tunel sərhədini bəzək deyil, mənalı edən şeydir.

İşçinin hansı mənbədən oxuya biləcəyini də məhdudlaşdırın. Əgər tətbiq növbə və ya ötürmə xidmətindən istifadə edirsə, həmin xidmət öz autentifikasiyasını və giriş siyasətini saxlayır, çünki VPN yükün içində heç nəyi autentifikasiya etmir.

Qısa müddətli funksiya da eyni baxışdan azad deyil. İşlədiyi müddətdə onun şəbəkə mövqeyi və etimadnamələri hələ də səlahiyyət verir və daha qısa ömür yalnız pəncərəni daraldır. Ömür, kimliyin hansı əməliyyatları yerinə yetirə biləcəyini qərarlaşdırmağın əvəzi deyil.

Daxildə heç nə dəyişməzdən əvvəl doğrulayın

İctimai forma sahələri əksi sübut olunana qədər hücumçunun idarə etdiyi mətndir və OWASP-ın giriş doğrulama təlimatı arxa fon axınlarını məhz bu səbəbdən etibarsız mənbələr sırasına aid edir. Şifrələnmiş ötürmə baytların salamat gəldiyini bildirir, onların icazəli sorğunu təsvir etdiyini deyil. Hər hansı imtiyazlı addımdan əvvəl təhlil edin və doğrulayın ki, pis sətir heç vaxt hərəkət edə bilən kod yoluna çatmasın.

İcazə verilən sahələri, onların formatlarını, ölçülərini və yerinə yetirilməli biznes qaydalarını müəyyənləşdirin. Tarix düzgün formalı ola bilər və yenə də tələb olunan əməliyyat üçün yanlış ola bilər, və daxili hesabı ya təsdiq statusunu adlandıran yük özünə bunlardan birini də verə bilməməlidir.

Rədd edilmiş sətirləri düzəliş təxmin etmək və ya qabığa və xam verilənlər bazası interfeysinə ötürmək əvəzinə baxış nəticəsinə göndərin. Qeyd identifikatorunu və uğursuz qaydayı qeyd edin, ərizəçinin yazdığı hər sahəni deyil.

Təkrar cəhd nöqtəsini bir əməliyyatda edin

Əgər submission-1042 qeydi ilk təsdiq itdiyi üçün iki dəfə çəkilirsə, işçiyə mənbə qeydini və onun təsdiqlənmiş nəticəsini tanımaq üçün davamlı üsul lazımdır. İşi bir dəfə icra edən cədvəl hər sətrin bir dəfə tətbiq olunduğunu sübut etmir. İkiqat çatdırılma normaldır, ona görə dizayn onu udmalıdır.

Daxili tətbiqin öz tranzaksiya və dublikat idarəetmə mexanizmindən istifadə edin və mənbə identifikatorunu, nəticəni və təsdiqi bir ardıcıl axında saxlayın. Yalnız nəzərdə tutulan əməliyyat icra edildikdən və ya davamlı təyin edildikdən sonra təsdiq verin və qəbul sətrini sadəcə baytlar yükləndi deyə heç vaxt silməyin.

Sonra bunu üç sınaq faylı ilə sübut edin: etibarlı sətir, qüsurlu sətir və eyni nəzarətli mənbə identifikatorunun iki dəfə çatdırılması. Hər biri işçinin istifadə etdiyi eyni son nöqtədən keçir.

for f in fixtures/valid-submission.json fixtures/bad-date.json; do
  curl --silent --fail --cert /etc/importer/client.crt \
    -X POST --data @"$f" https://intake.corp.internal/api/records
done
curl --silent --fail --cert /etc/importer/client.crt \
  -X POST --data @fixtures/valid-submission.json https://intake.corp.internal/api/records

İlk iki sətir fərqli daxili vəziyyətlərdə bitməlidir və üçüncüsü həmin mənbə qeydi üçün artıq təsdiqlənmiş identifikatoru qaytarmalıdır, ikincisini yaratmaq əvəzinə. Başqa hər şey idxalın hələ təkrarlana bilən olmadığını bildirir.

Əlaqəli məqalələr