- TL;DR: API çağrılarını HTTP’den HTTPS’ye yönlendirmek yerine başarısız olacak şekilde tasarlayın. HTTP’yi tamamen devre dışı bırakın ya da açık bir HTTP hata yanıtı döndürün ve şifrelenmemiş bağlantı üzerinden gönderilen API anahtarlarını iptal edin. Ne yazık ki bugün birçok büyük API sağlayıcısı bunu yapmıyor.
Arka plan
- Web tarayıcıları bir HTTP URL’sine bağlandığında, servisler çoğu zaman ilgili isteği HTTPS sayfasına yönlendirir.
- İlk HTTP trafiği şifrelenmemiştir; bu da onu ağ üzerindeki aradaki adam (MITM) saldırılarına açık hale getirir.
- HSTS (HTTP Strict Transport Security) gibi teknolojiler devreye alınarak güvenlik güçlendirilmiştir.
Basit bir yazım hatasının riski
- Çalışma sırasında üçüncü taraf bir API ile entegrasyon yaparken, API temel URL’si yanlışlıkla
https:// yerine http:// olarak girildi.
- Node.js’in
fetch fonksiyonu sessizce HTTPS yönlendirmesini takip etti.
- API anahtarı düz metin olarak iletildiği için bir güvenlik riski doğabilirdi.
- Hata kod incelemesi sırasında fark edilerek sorun giderildi.
Hızlı başarısız olma ilkesi
- Bir API HTTP isteklerini HTTPS’ye yönlendirirse, bu tür yazım hataları kolayca gözden kaçabilir.
- Hızlı başarısız olma ilkesini izlemek daha iyidir: şifrelenmemiş API çağrıları açıkça başarısız olmalıdır.
- API sunucusunun HTTP arayüzünü devre dışı bırakmak ya da HTTP isteklerine hata mesajı döndürmek önerilir.
Diğer API’lerdeki örnekler
- Birçok tanınmış API, HTTP istekleri için 403 hata mesajı döndürüyor ya da HTTP arayüzünü devre dışı bırakıyor.
- Ancak bazı API’ler hâlâ HTTP’den HTTPS’ye yönlendirme yapıyor.
En iyi uygulama ihtiyacı
- Kullanıcı odaklı uygulamalarda HTTP’den HTTPS’ye yönlendirme yaygındır.
- Ancak API’ler söz konusu olduğunda, HTTP’den HTTPS’ye yönlendirme tersine zararlı olabilir.
- OWASP gibi güvenlik projelerinde API’ler için daha açık yönergelere ihtiyaç var.
Sonuç
- API’ler, HTTP’den HTTPS’ye yönlendirmek yerine şifrelenmemiş istekleri açıkça başarısız kılmalıdır.
- API anahtarları şifrelenmemiş bir bağlantı üzerinden iletilirse derhal iptal edilmelidir.
- API güvenliği en iyi uygulamaları güncellenerek açık rehberlik sağlanmalıdır.
GN⁺ görüşü
- Güvenliği güçlendirme gereği: API güvenliği son derece önemlidir ve HTTP’den HTTPS’ye yönlendirme güvenlik açıklarına yol açabilir.
- Hızlı başarısız olma ilkesi: Hataların geliştirme sürecinin erken aşamasında fark edilip düzeltilebilmesi için bu ilkenin izlenmesi önemlidir.
- En iyi uygulamaların güncellenmesi: OWASP gibi güvenlik projeleri, API güvenliği konusunda açık yönergeler sağlamalıdır.
- Otomatik anahtar iptali: Şifrelenmemiş bağlantılar üzerinden gönderilen API anahtarları otomatik olarak iptal edilmelidir.
- Diğer API örneklerinden yararlanma: Kendi API güvenliğini güçlendirmek için diğer API’lerin güvenlik uygulamalarından yararlanmak gerekir.
5 yorum
Yasayla düzenlenmesi gereken bir alan gibi görünüyor.
Öncelikle not: API'de
httpsyönlendirmesi yasakTeknik olarak doğru bir nokta, ancak
çoğu kurumsal istemcide güvenlik politikaları gereği HTTP erişiminde koşulsuz olarak HTTPS yönlendirmesi göndermek standart haline gelmiş durumda.
Ayrıca kendi sitelerini kullanan müşterilere hata ekranı göstermeyi de istemedikleri için, kendi hizmetini işleten bir yer değilse tedarikçi tarafında bakınca biraz uzak bir mesele gibi kalıyor..
Vay, yapay zeka böyle bir hata yapmış haha, düzelttim.
Hacker News görüşü