English | 繁中版 | 简中版 | العربية | Български | বাংলা | Català | Čeština | Deutsch | Ελληνικά | Español | فارسی | Français | हिंदी | Indonesia | Italiano | 日本語 | 한국어 | ພາສາລາວ | Македонски | മലയാളം | Монгол | Nederlands | Polski | Português (Brasil) | Русский | ไทย | Türkçe | Українська | Tiếng Việt
API-nizi tərtib edərkən, sınaqdan keçirərkən və dərc edərkən ən vacib təhlükəsizlik tədbirlərinin siyahısı.
-
Basic Authistifadə etməyin. Bunun əvəzinə standart identifikasiya həllərindən (məsələn: JWT, OAuth kimi) istifadə edin. -
Autentifikasiya,tokenlərin yaradılması,parolların saxlanmasıüçün təkəri yenidən kəşf etməyə çalışmayın. Standartlardan istifadə edin. -
Cəhdlərin sayınıməhdudlaşdırmaqla giriş hüquqlarını məhdudlaşdırın. - Bütün həssas məlumatlarda şifrələmədən istifadə edin.
- (
JWT Secret) kimi təsadüfi, mürəkkəb və çətin açardan istifadə edərək, kobud qüvvə ilə şifrənin açılmasını mümkün qədər çətinləşdirin. - Daxil olan məlumatlara əsasən alqoritmi təyin etməyin. Bunu arxa planda reallaşdırın. ('HS256' və ya 'RS256').
- Tokenin son istifadə tarixini (
TTL,RTTL) mümkün qədər qısa edin. - Həssas məlumatlarınızı JWT faydalı yükünə qoymayın, o Asanlıqla deşifrə edilə bilər.
- Çox məlumat saxlamaqdan çəkinin. JWT adətən başlıqlarda paylaşılır və onların ölçü limiti var.
- Özünüzü DDoS və ya kobud güc hücumlarından qorumaq üçün sorğuları məhdudlaşdırmalısınız.
- MITM (Man In The Middle Attack) hücumlarından qorunmaq üçün server tərəfində HTTPS-dən istifadə edin.
- SSL Strip hücumlarından qorunmaq üçün SSL ilə
HSTSbaşlığından istifadə edin. - Kataloq siyahılarını bağlayın.
- Şəxsi API-lər üçün yalnız ağ siyahıya alınmış IP-lərdən/hostlardan girişə icazə verin.
- Yalnız ağ siyahıya alınmış URL-lərə icazə vermək üçün həmişə server tərəfindəki
redirect_uriməlumatını yoxlayın. - Həmişə işarəni deyil, kodu dəyişməyə çalışın (
response_type=tokenistifadə etməyə icazə verməyin). - OAuth autentifikasiyası zamanı CSRF-nin qarşısını almaq üçün
stateparametrini təsadüfi olaraq hash edin. - Standart əhatə dairəsini təyin edin və hər bir tətbiq üçün əhatə dairəsi parametrlərini yoxlayın.
- Əməliyyata uyğun olaraq müvafiq HTTP metodundan istifadə edin:
GET (oxu),POST (yarat),PUT/PATCH (dəyişiklik etmək/yeniləmək üçün)vəDELETE (yazı silmək üçün), əgər istədiyiniz üsul resurs üçün uyğun deyilsə,405 Metoduna İcazə Verilmədimesajı ilə cavab verin. - Qəbul başlığındakı
məzmun növügözlədiyiniz və icazə verdiyiniz formatda olub-olmadığını yoxlayın. (məsələn,application/xml,application/jsonvə s.) Format uyğun gəlmirsə,406 Qəbul Edilməzmesajı ilə cavab verin. - Göndərilən məlumatı təsdiq edərkən, daxil olan məlumatların 'məzmun növünü' yoxlayın (məsələn, 'application/x-www-form-urlencoded', 'multipart/form-data', 'application/json' və s.).
- Ümumi təhlükəsizlik zəifliklərinin qarşısını almaq üçün istifadəçidən gələn hər bir məlumatı yoxlayın (məsələn,
XSS,SQL-Injection,Remote Code Executionvə s.). - URL-də həssas datadan (
etimadnamələr,Parollar,təhlükəsizlik nişanlarıvə yaAPI açarları) istifadə etməyin, lakin standart Avtorizasiya başlığından istifadə edin. - Yalnız server tərəfində şifrələmədən istifadə edin.
- Keşləmə və sürət limiti siyasətlərini aktivləşdirmək (məsələn,
Kvota,Spike Həbs,Paylaşım sürəti limiti) və API resurslarını dinamik şəkildə yaymaq üçün API Gateway xidmətindən istifadə edin.
- Doğrulama yan keçməsinin qarşısını almaq üçün bütün proses son nöqtələrinin autentifikasiya arxasında qorunub-qorunmadığını yoxlayın.
- İstifadəçinin öz resurs identifikatorundan istifadə etməkdən çəkinmək lazımdır.
/me/ordersəvəzinə/user/654321/ordersistifadə edin. - Avtomatik artan ID-lərdən istifadə etməyin. Əvəzinə
UUIDistifadə edin. - XML fayllarını təhlil edirsinizsə (analiz edirsinizsə),
XXE(XML xarici obyekt hücumu) qarşısını almaq üçün obyektin təhlilinin aktiv edilmədiyini yoxlayın. - Əgər XML fayllarını təhlil edirsinizsə (analiz edirsinizsə),
Milyard Gülüş/XML bombaobyektinin genişləndirilməsi hücumu vasitəsilə obyektin genişlənməsinin qarşısını almaq üçün onun aktiv olmadığından əmin olun. - Fayl yükləmələri üçün CDN istifadə edin.
- Böyük həcmdə məlumatlarla məşğul olursunuzsa, HTTP bloklanmasının qarşısını almaq üçün arxa planda işləmək və tez cavab vermək üçün mümkün qədər işçilərdən və növbələrdən istifadə edin.
- DEBUG rejimini söndürməyi unutmayın!
- Əgər varsa, icra olunmayan parçalardan istifadə edin.
-
X-Content-Type-Options: nosniffbaşlığını göndərin. -
X-Frame-Options: rədd etbaşlığını göndərin. - `Məzmun-Təhlükəsizlik-Siyasəti: default-src 'heç biri'' başlığını göndərin.
- Barmaq izi başlıqlarını silin -
X-Powered-By,Server,X-AspNet-Versionvə s. - Sorğuya cavab olaraq
content-typeistifadə etməyə məcbur edin, əgər məlumatlarıapplication/jsonkimi qaytarsanız,content-typeapplication/jsonolmalıdır. - Nəticədə "etimadnamələr", "parollar" və ya "təhlükəsizlik nişanları" kimi həssas məlumatları göndərməyin.
- Əməliyyat başa çatdıqdan sonra müvafiq status kodunu qaytarın. (məsələn,
200 OK,400 Bad Sorğu,401 İcazəsiz,405 Metod İcazə Verilmirvə s.).
- Vahid/inteqrasiya testi əhatə ölçüləri ilə dizayn və tətbiqinizi yoxlayın.
- Kodun nəzərdən keçirilməsi prosesindən istifadə edin və öz təsdiqinizə məhəl qoymayın.
- Kodunuzu aktivləşdirməzdən əvvəl xarici kitabxanalar və digər asılılıqlar daxil olmaqla xidmətlərinizin bütün komponentlərinin AntiVirus proqramı ilə statik olaraq skan edildiyinə əmin olun.
- Davamlı olaraq kodunuzda təhlükəsizlik testlərini (statik/dinamik analiz) keçirin.
- Məlum zəifliklər üçün asılılıqlarınızı (həm proqram təminatı, həm də əməliyyat sistemi) yoxlayın.
- Yerləşdirmələr üçün ehtiyat həlli dizayn edin.
- Bütün xidmətlər və komponentlər üçün mərkəzi girişdən istifadə edin.
- Bütün trafikə, səhvlərə, sorğulara və cavablara nəzarət etmək üçün agentlərdən istifadə edin.
- SMS, Slack, E-poçt, Telegram, Kibana, Cloudwatch və s. xəbərdarlıqlardan istifadə edin.
- Kredit kartları, parollar, PIN-lər və s. Həssas məlumatları daxil etmədiyinizə əmin olun.
- API sorğularınızı və nümunələrinizi izləmək üçün IDS və/və ya IPS sistemindən istifadə edin.
- yosriady/api-development-tools - RESTful HTTP + JSON API qurmaq üçün faydalı resurslar toplusu.
Bu deponu budaqlamaq, bəzi dəyişikliklər etmək və pull requests göndərməklə töhfə verməkdən çəkinməyin. Hər hansı bir sual üçün bizə bir e-poçt yazın: team@shieldfy.io.