JSON Nedir? Modern Veri Formatına Güvenlik Odaklı Pratik Giriş
JSON'a Giriş: Neden Hâlâ Temel Bir Konu?
JSON (JavaScript Object Notation), 2001'de Douglas Crockford tarafından standartlaştırılan, insan okunabilirliği yüksek bir veri değişim formatıdır. REST API'ler, yapılandırma dosyaları ve konfigürasyon yönetimi gibi birçok alanda hâlâ endüstri standardı olarak kullanılmaktadır. JSON'un basitliğinden doğan kolaylık, aynı zamanda güvenlik açısından dikkatli olunmasını gerektirir.
Modern uygulamalarda JSON; API istekleri, sunucu yanıtları ve dosya depolama için yaygın biçimde kullanılır. Formatın basit yapısı, güvenlik incelenmediğinde ciddi risklere de yol açabilir.
JSON Yapısı ve Temel Kurallar
JSON iki temel veri yapısına dayanır:
- Objeler: Süslü parantez
{}ile başlayan, anahtar-değer çiftlerinden oluşan kümelerdir. - Diziler: Köşeli parantez
[]ile oluşturulan, sıralı değer koleksiyonlarıdır.
Geçerli veri türleri sınırlıdır: string, number, boolean, null, object ve array. Her JSON metninin bir kök öğesi bulunur.
Örnek basit bir JSON nesnesi:
{
"ad": "Ahmet",
"yas": 30,
"aktif": true
}
JSON kuralları katıdır: String değerler çift tırnak ile sarılmalı, son virgül kullanılamaz ve anahtarlar mutlaka tırnak içinde olmalıdır. Bu katılık, hem okunabilirliği artırır hem de formatın güvenli işlenmesini kolaylaştırır.
JSON ve Güvenlik: Dikkat Edilmesi Gerekenler
JSON işlenirken bilinmesi gereken birkaç kritik güvenlik durumu vardır:
- Aşırı büyük payloadlar: JSON tabanlı DoS (Hizmet Reddi) saldırılarında büyük veri yükleri ile sistem kaynakları tüketilebilir.
- Tehlikeli deserializasyon: Bazı dillerde JSON içeriği doğrudan kod objesine dönüştürülebilir. Güvenilmeyen kaynaklardan gelen JSON verisi kontrolsüz deserialize edilirse, kötü amaçlı veri enjeksiyonu riski doğar.
- JSON Injection: Kullanıcı girdilerinin doğrudan JSON yapısına eklenmesi, söz dizimi bozulmasına veya beklenmedik veri manipülasyonuna yol açabilir.
- HTTP başlıkları:
Content-Type: application/jsonbaşlığının doğru ayarlanmaması, yanıltıcı içerik işleme riski taşır.
Pratik İpuçları: Güvenli JSON Kullanımı
Uygulamalarınızda JSON güvenliğini güçlendirmek için uygulayabileceğiniz temel pratikler şunlardır:
- Validasyon: Tüm gelen JSON verilerini şema bazlı validasyondan geçirin. JSON Schema veya benzeri araçlarla zorunlu alanları, veri tiplerini ve uzunluk sınırlarını tanımlayın.
- Input filtering: Kullanıcı girdilerini temizleyin. Özellikle metin içeren alanlarda HTML etiketleri veya özel karakterler için kaçış işlemlerini uygulayın.
- Deserializasyon kontrolü: Sadece güvendiğiniz kaynaklardan gelen JSON'u doğrudan objeye dönüştürün. Güvenilmeyen veriler için katı tip denetimi uygulayın.
- Payload boyut sınırı: API seviyesinde maksimum JSON boyutu belirleyin ve bu sınırı aşan istekleri reddedin.
- Güvenli kütüphane kullanımı: Güncel ve yaygın olarak test edilmiş JSON kütüphanelerini tercih edin. Eski veya bakımsız kütüphanelerden kaçının.
JSON, modern yazılım geliştirmede vazgeçilmez bir araçtır. Basit yapısı sayesinde hızlıca öğrenilir ve kullanılır, ancak bu kolaylık güvenlik açıklarına da yol açabilir. Yukarıda belirtilen kuralları uygulamalarınıza entegre etmek, JSON tabanlı威胁leri büyük ölçüde azaltacaktır.
Güvenli kodlama, her zaman format ve protokol seçiminden başlar.