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 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.
- Ö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.
- You don't need JWT, just use a randomly generated API key. If you need asymmetric encryption or tamper prevention, here are some alternatives to JWT.
- Implement sliding window rate limiting per API key and IP.
- Use exponential backoff for repeated failed authentication attempts.
- Implement CAPTCHA or proof-of-work challenges after suspicious activity.
- Monitor and alert on unusual API usage patterns (time, volume, endpoints).
- Disable introspection in production environments.
- Implement query depth limiting to prevent nested query attacks.
- Use query cost analysis to prevent resource exhaustion.
- Whitelist allowed queries in production when possible.
- Rotate API keys and secrets on a regular schedule.
- Use hardware security modules (HSM) for signing operations.
- Implement secret scanning in CI/CD pipelines.
- Never commit secrets to version control - use environment variables or secret managers.
- Implement mutual TLS (mTLS) for service-to-service communication.
- Validate all requests even from internal services.
- Use short-lived tokens with automatic refresh.
- Implement request signing for sensitive operations.
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: [email protected].