English | 繁中版 | 简中版 | Português (Brasil) | Français | 한국어 | Nederlands | Indonesia | ไทย | Русский | Українська | Español | Italiano | 日本語 | Deutsch | Tiếng Việt | Монгол | हिंदी | العربية | Polski | Македонски | ລາວ
API'nizi tasarlarken, test ederken ve yayınlarken en önemli güvenlik önlemlerinin kontrol listesi.
-
Basic Authkullanmayın. Standard authentication kullanın (ör. JWT, OAuth). -
Authentication,token generation,password storageiçin tekerleği yeniden icat etmeyin. Standartları kullanın. -
Max Retrykullanarak giriş hakkını sınırlayın. - Tüm hassas verilere şifreleme kullanın.
- Brute forcing yönetimi ile oluşturulan token'in çözülmemesi için (
JWT Secret) gibi rasgele, karmaşık ve zor bir anahtar kullanın. - Algoritmayı payload üzerinden çekmeyin. Arka planda içinde kullanın. (
HS256veyaRS256). - Token'in son kullanma tarihini (
TTL,RTTL) olabildiğince kısa yapın. - Hassas verilerinizi JWT payload'a koymayın, decode edilebilir. Basit olarak.
- Yalnızca beyaz listeye eklenen URL'lere izin vermek için sunucu tarafındaki
redirect_uridaima doğrulayın. - Daima kodları değiştirmeyi deneyin tokenları değil (
response_type=tokenizin vermeyin). - OAuth kimlik doğrulama işlemi sırasında CSRF'yi önlemek için
stateparametresini rasgele bir hashleyerek kullanın. - Varsayılan kapsamı tanımlayın ve her uygulama için kapsam parametrelerini doğrulayın.
- DDoS / brute-force saldırılarından korunmak için istekleri sınırlamalısınız.
- MITM (Man In The Middle Attack) korunmak için sunucu tarafında HTTPS kullanın.
- SSL Strip saldırılarından korunmak için
HSTSheader'ı SSL ile kullan.
- İş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ğin ve izin verdiğin formatta olup olmadığını kontrol et. (ör.application/xml,application/json, v.b.) Format uyuşmuyorsa406 Not Acceptablemesajı ile cevap verin. - Gönderilen verileri doğrularken gelen verinin
content-typede 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ı girişini 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. - Önbelleklemeyi etkinleştirmek, hız sınır politikalarını (ör.
Quota,Spike Arrest,Concurrent Rate Limit) ve API kaynaklarını dinamik olarak dağıtmak için bir API Gateway hizmeti kullanın.
- Authentication işleminin sonlandırılmasını önlemek için, tüm bitiş noktalarının Authentication arkasında korunup korunmadığını kontrol edin.
- Kullanıcı kendi kaynak ID'sinden kaçınmalıdır.
/me/ordersyerine/user/654321/orderskullanmalıdır. - 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 engellemeyi önlemek için İşçi ve Kuyrukları arka planda olabildiğince işlem yapmak ve yanıtı hızlı bir şekilde yanıtlamak için kullanın.
- DEBUG modunu kapatmayı unutmayın!.
-
X-Content-Type-Options: nosniffheader'ı gönder. -
X-Frame-Options: denyheader'ı gönder. -
Content-Security-Policy: default-src 'none'header'ı gönder. - Parmak izi başlıklarını kaldırın -
X-Powered-By,Server,X-AspNet-Versionv.b. - Response'unda
content-typekullanmaya zorla, eğer veriyiapplication/jsonolarak döndürürsen,content-typekarşılığıapplication/jsonolur. - Hassas verilerinizi geri göndermeyin
credentials,Passwords,security tokens. - İşlem tamamlandıktan sonra uygun durum kodunu döndürür. (ör.
200 OK,400 Bad Request,401 Unauthorized,405 Method Not Allowed, v.b.).
- unit/integration testi kapsamı ile tasarımınızı ve uygulamanızı denetleyin.
- Bir kod inceleme işlemi kullanın ve kendi onayınızı dikkate almayın.
- Vendor kitaplıkları ve diğer bağımlılıklar da dahil olmak üzere, oluşturmaya başlamadan önce hizmetlerinizin tüm bileşenlerinin AntiVirus yazılımıyla statik olarak tarandığından emin olun.
- Dağıtımlar için bir geri yükleme çözümü tasarlayın.
- yosriady/api-development-tools - RESTful HTTP+JSON API'leri oluşturmak için kullanışlı kaynakların bir koleksiyonu.
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.