İçindekiler Tablosu
Application Programming Interface (API) Nedir?
Web yapılandırmalarında ve uygulamalarında API kullanımı vazgeçilmez bir hale geldi ve dolayısıyla API güvenliği de önem arz etmeye başladı. Peki, API nedir ve neden bu kadar çok kullanılan bir teknoloji?
Application Programming Interface (API), farklı uygulamaların veya yazılımların birbirleriyle veri iletişimi kurmasını sağlayan bir arayüz ve kurallar bütünüdür. Uygulamalar arasında aracı görevi gören API, yazılım uygulamalarının veya hizmetlerinin birbiri arasında veri ve işlevsellik paylaşmasına olanak tanır. Buna ek olarak uygulamalar arasında değiştirilen istek türlerini, isteklerin nasıl yapıldığını ve hangi veri formatlarına izin verildiğini kontrol eder ve yönetir.
API’lerin ödeme onaylama ve kontrol, video konferans, sosyal medya, mesajlaşma, sağlık takibi ve akıllı ev teknolojileri gibi çeşitli kullanım alanları vardır.
Bu konseptin anlaşılmasını daha da kolaylaştırmak için bir örnek:
Güncel hava durumu bilgisi sağlayan basit bir web sitesi düşünün. Bu web sitesinin kendine ait bir meteoroloji firmasına bağlı olmadığını varsayıyoruz. Yani gerekli verilere ulaşabilmek için başka bir yazılımın API’sine çağrı yapmak zorunda. Verilere sahip firmanın oluşturduğu API, çağrıyı aldıktan sonra talep edilen verileri istek gönderene döndürecektir.
Ele alınan örnekteki API’nin sağladığı avantajlar:
API’ye çağrı yapan web sitesi için;
- İstenilen verilere hızlı, kolay ve doğrudan erişim sağlar.
- Hazırda bulunan verileri kullanabilme imkanı sağladığı için manuel veri toplama veya depolama ihtiyacı ortadan kalkar.
- Maliyet tasarrufu sağlar.
API’yi oluşturup paylaşan firma için;
- Üçüncü taraflara paylaşacağı verileri satarak gelir elde etme fırsatı oluşturma.
- Marka bilinirliğini arttırma.
- İşbirliği fırsatları oluşturma.
API Türleri
Teknik özelliklerine göre API’yi 3 farklı türe ayırabiliriz:
- SOAP (Simple Object Access Protocol): XML tabanlı bir iletişim protokolüdür. Tercih edilmesinin ardındaki sebep güvenlik ve bütünlük odaklı bir API olması. Okunabilirliğinin düşük olması sebebiyle günümüzde bankacılık gibi yüksek güvenlik ihtiyacı olan sektörler harici kullanımı düşüktür.
- REST (Represantational State Transfer): HTTP’yi temel alarak web tabanlı servis iletişimi sağlar. URL’ler ve HTTP metodlarıyla kaynaklara erişir. Hafif, esnek ve basit bir yaklaşımdır. En çok kullanılan API türüdür. Hava durumu örneğinde REST API kullanılmıştır.
- GraphQL: Veri sorgulama ve manipülasyonu için bir dil, ihtiyaç duyulan veriyi özelleştirilmiş sorgularla almayı sağlar. Esnek bir veri alışverişi sağladığı için kompleks veri yapısı gerektiren projelerde tercih sebebi olur.
Yukarıdaki örnekte request URI içerisindeki “v1” parametresini değiştirilir. Bu sayede API’nin eğer mevcutsa eski veya henüz testi yapılmamış yeni versiyonlarına ulaşmayı mümkün kılar. Bu senaryo bir zafiyet senaryosudur.
API Güvenliği
API’ler uygulama verilerini, kaynaklarını ve kişisel bilgiler dahil olmak üzere hassas veriler üzerinden trafik oluşturur. Bu sebeple saldırganlar tarafından hedef alınması sık rastlanan bir durum. Saldırganlar korumasız API’ler aracılığıyla hassas verilere erişebilir ve manipüle edebilir.
Buna engel olmak için alınması gereken bir takım gerçek zamanlı veya öncesinden güvenlik önlemleri mevcut. Ancak bahsettiğim üzere SOAP, REST ve GraphQL teknik açıdan birbirinden farklı, üç yaygın API modelidir. Yani her API modeli farklı güvenlik önlemleri almayı gerektirecektir.
SOAP API Güvenliği
SOAP API’leri genellikle aktarım katmanı güvenliği (HTTPS gibi) ve mesaj düzeyinde güvenliğin (XML dijital imzaları ve şifreleme gibi) bir kombinasyonu kullanılarak güvence altına alınır. Güvenlik sorunlarıyla başa çıkmak için bazı protokolleri içerir. Built-in hata desteğini genişleten WS-ReliableMessaging gibi özellikler aracılığıyla tüm web hizmetleri için kurumsal düzeyde güvenlik sağlayan spesifikasyonlar aracılığıyla güvenliği arttırılabilir.
REST API Güvenliği
Built-in güvenlik protokollerinin bulunmadığı REST API güvenliği, API tasarımına bağlıdır. Veri iletimi, dağıtımı ve istemci etkileşimi hizmetleri güvenlik hususlarını içermelidir. Çoğu REST API, aktarım katmanı güvenliğine (HTTPS gibi) ve token-based kimlik doğrulamasına dayanır.
REST API güvenliğine yönelik yaygın bir mimari tercih mevcut. Bu yapılandırma; REST API’leri bir API ağ geçidinin (gateway) arkasında dağıtmak ve ardından istemcilere bu bağlantı seçeneğini sunmaktır. Ancak bir API ağ geçidi, tek başına güvenlik tehditlerine karşı yeterli savunma sağlayamaz. Bundan dolayı önlemler bir bütün olarak alınmalıdır.
SOAP ve REST API'leri karşılaştıracak olursak, ikisi de HTTP isteklerini ve yanıtlarının yanı sıra SSL teknolojisini destekler. Built-in güvenlik özelliklerine sahip SOAP API'leri doğası gereği daha güvenlidir. REST API'ler ise oluşturulma aşamasında uygulama ve mimari seçimler yoluyla güvenli hale getirilmelidir.
GraphQL API Güvenliği
GraphQL API güvenliğini güçlendirmek için alınacak önlemler, özelleştirilen ve esnek istekleri karmaşıklaştırarak sunucunun bu sorguları düzgün işlemesine engel olduğu durumlar mevcut.
BU API türünde güvenlik risklerini azaltmaya yönelik yöntemler arasında kısıtlama ve maksimum sorgu derinliğinin ayarlanmasının yanı sıra büyük sorgulara karşı savunma için sorgu zaman aşımı seçenekleri alınması gereken mantıklı önlemlerdir.
Sürekli/Gerçek Zamanlı Güvenlik
Bir API’nin ayakta kaldığı süre boyunca güvenliğinin sürekli olarak izlenmesi ve geliştirilmesi olmazsa olmazdır. Bu yaklaşım, bir API’ın güvenli ve ilgili düzenleme ve standartlarla uyumlu olmasını sağlamaya yardımcı olur ve kuruluşların potansiyel güvenlik açıklarını ve risklerini tespit edip önlem almasına yardımcı olur.
Firmaların API’lar için sürekli güvenlik uygulayabilmelerinin çeşitli farklı yolları vardır:
Aralıklı testler: Bir API’nin güvenliğinin düzenli olarak test edilmesi, potansiyel güvenlik açıklarının belirlenmesine ve belirlenen sorunların derhal ele alınmasına yardımcı olur. Yani düzenli aralıklarla penetrasyon testi yapılmalıdır.
Eş zamanlı kontrol ve izleme: Bir API’nin eş zamanlı olarak izlenmesi, potansiyel veya gerçekleşmekte olan güvenlik tehditlerinin belirlenmesini sağlar. Bu şekilde tehditleri önlemek için uygun aksiyonların alınmasına yardımcı olacaktır.
Bilinçlendirici ve teknik eğitimler: Geliştiricilerin ve diğer paydaşların API güvenliğine yönelik güncel uygulamalar konusunda eğitilmesini sağlamak, hataların önlenmesine ve API’nin güvenli olmasını sağlamaya yardımcı olur. Bu eğitimlerin, zafiyetsiz kodlama, kimlik doğrulama ve yetkilendirme gibi konuları içermesi faydalı olur.
HacktorX
HacktorX YazarıSilinmiş kullanıcıların yazıları bu kullanıcı hesabı ile yayına devam etmektedir.