English | 繁中版 | 简中版 | العربية | Azərbaycan | Български | বাংলা | Català | Čeština | Deutsch | Ελληνικά | Español | فارسی | Français | हिंदी | Indonesia | Italiano | 日本語 | 한국어 | ພາສາລາວ | Македонски | മലയാളം | Монгол | Nederlands | Polski | Português (Brasil) | Русский | ไทย | Українська | Tiếng Việt
API'nizi tasarlarken, test ederken ve yayınlarken en önemli güvenlik önlemlerinin kontrol listesi.
-
Basic Authkullanmayın. Bunun yerine standardlaşmış kimlik doğrulama çözümlerini kullanmalısınız. -
Kimlik doğrulama,token oluşturma,şifreleri kaydetmeiçin tekerleği yeniden icat etmeye çalışmayın. Standartları kullanın. -
Deneme sayısınısınırlayarak giriş hakkını kısıtlayın. - Tüm hassas verilerde şifreleme kullanın.
- DDoS ya da kaba kuvvet saldırılarından korunmak için istekleri sınırlamalısınız.
- MITM (Man In The Middle Attack) saldırılarında korunmak için sunucu tarafında HTTPS kullanın.
- SSL Strip saldırılarından korunmak için
HSTSheader'ı SSL ile kullan. - Dizin listelerini kapatın.
- Özel API'ler için, yalnızca beyaz listedeki IP'lerden/host'lardan erişime izin verin.
- Yalnızca beyaz listeye eklenen URL'lere izin vermek için sunucu tarafındaki
redirect_uribilgisini her zaman doğrulayın. - Her zaman code değiştirmeyi deneyin token değiştirmeyi değil (
response_type=tokenkullanımına izin vermeyin). - OAuth kimlik doğrulama işlemi sırasında CSRF'yi önlemek için
stateparametresini rasgele hashleyerek kullanın. - Varsayılan kapsamı tanımlayın ve her uygulama için kapsam parametrelerini doğrulayın.
- İşleme göre uygun HTTP yöntemini kullanın:
GET (okumak),POST (oluşturmak),PUT/PATCH (değiştirmek/güncellemk), veDELETE (bir kaydı silmek için), eğer istenen yöntem istenen kaynak için uygun değilse405 Method Not Allowedmesajı ile cevap verin. - Accept header gelen
content-typebeklediğiniz ve izin verdiğiniz formatta olup olmadığını kontrol edin. (ör.application/xml,application/json, v.b.) Format uyuşmuyorsa406 Not Acceptablemesajı ile cevap verin. - Gönderilen verileri doğrularken gelen verinin
content-typedeğerini doğrulayın (ör.application/x-www-form-urlencoded,multipart/form-data,application/json, v.b.). - Genel güvenlik açıklarını önlemek için kullanıcıdan gelen her veriyi doğrulayın (ör.
XSS,SQL-Injection,Remote Code Execution, v.b.). - URL'de hassas veriler (
credentials,Passwords,security tokens, veyaAPI keys) kullanmayın, ancak standart Authorization header kullanın. - Yalnızca sunucu tarafı şifreleme kullanın.
- Önbelleklemeyi ve hız sınır politikalarını (ör.
Quota,Spike Arrest,Concurrent Rate Limit) etkinleştirmek için ve API kaynaklarını dinamik olarak dağıtmak için bir API Gateway hizmeti kullanın.
- Kimlik doğrulama işleminin atlatılmasını önlemek için, tüm iştem uç noktalarının kimlik doğrulama arkasında korunup korunmadığını kontrol edin.
- Kullanıcı için kendi kaynak ID'si kullanılmasından kaçınılmalıdır.
/me/ordersyerine/user/654321/orderskullanın. - Otomotik artan ID'ler kullanmayın. Yerine
UUIDkullanın. - Eğer XML dosyarını (parse) ayrıştırıyorsanız, varlık ayrıştırmasını önlemek için etkin olmadığını doğrulayın
XXE(XML external entity attack). - Eğer XML dosyarını (parse) ayrıştırıyorsanız,
Billion Laughs/XML bombvarlık genişletme saldırısı yoluyla,varlığın genişlemesinin önlemek için etkinleştirilmediğinden emin olun. - Dosya yüklemeleri için bir CDN kullanın.
- Büyük miktarda veri ile uğraşıyorsanız, HTTP tıkanmasını engellemeyi önlemek için işleyici (Worker) ve kuyrukları (Queues) yapılarını arka planda işlem yapmak ve yanıtı hızlı bir şekilde yanıtlamak için mümkün oluğu kadar kullanın.
- DEBUG modunu kapatmayı unutmayın!
- Varsa yürütülemez yığınları kullanın.
-
X-Content-Type-Options: nosniffheader'ı gönderin. -
X-Frame-Options: denyheader'ı gönderin. -
Content-Security-Policy: default-src 'none'header'ı gönderin. - Parmak izi header'larını kaldırın -
X-Powered-By,Server,X-AspNet-Versionv.b. - İsteğe verilen cevapta
content-typekullanmaya zorlayın, eğer veriyiapplication/jsonolarak döndürürseniz,content-typekarşılığıapplication/jsonolmalı. - Do not return overly specific error messages to the client that could reveal implementation details, use generic messages instead, and log detailed information only on the server side.
-
kimlik bilgileri,şifreleriveyagüvenlik token'larıgibi hassas verileri sonuç içinde göndermeyin. - İşlem tamamlandıktan sonra uygun durum kodunu döndürün. (ör.
200 OK,400 Bad Request,401 Unauthorized,405 Method Not Allowed, v.b.).
- unit/integration testi kapsamı ölçümleri ile tasarımınızı ve uygulamanızı denetleyin.
- Bir kod inceleme süreci kullanın ve kendi onayınızı dikkate almayın.
- Kodunuzu canlıya göndemreden önce harici kitaplıkları ve diğer bağımlılıklar da dahil olmak üzere hizmetlerinizin tüm bileşenlerinin AntiVirus yazılımıyla statik olarak tarandığından emin olun.
- Kodunuz üzerinde sürekli olarak güvenlik testleri (statik/dinamik analiz) çalıştırın.
- Bilinen güvenlik açıkları için bağımlılıklarınızı (hem yazılım hem de işletim sistemi) kontrol edin.
- Dağıtımlar için bir geriye dönme çözümü tasarlayın.
- Tüm hizmetler ve bileşenler için merkezi login kullanın.
- Tüm trafiği, hataları, istekleri ve yanıtları izlemek için aracıları kullanın.
- SMS, Slack, E-posta, Telegram, Kibana, Cloudwatch, vb. için uyarıları kullanın.
- Kredi kartları, parolalar, PIN'ler, vb. hassas verileri günlüğe kaydetmediğinizden emin olun.
- API isteklerinizi ve örneklerinizi izlemek için bir IDS ve/veya IPS sistemi kullanın.
- yosriady/api-development-tools - RESTful HTTP+JSON API'leri oluşturmak için kullanışlı kaynakların bir koleksiyonu.
- 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 depoyu forklayarak, bazı değişiklikler yaparak ve pull requests göndererek katkıda bulunmaktan çekinmeyin. Herhangi bir sorunuz için bize bir e-posta bırakın: team@shieldfy.io.