HTTP Compression Header Nedir, Faydaları Nelerdir?

“HTTP Compression Header” yani Türkçe anlamıyla “HTTP Başlık Sıkıştırması”, web istemcileri ile web sunucularına yerleştirilebilen bir sıkıştırma yöntemidir. HTTP sıkıştırmaların amacı ise bant genişliğinin kullanımını daha sağlıklı bir hale getirmek ve ekstradan da aktarım hızlarını iyileştirmektir.

Veriler, HTTP tarafından daha sunucudan gönderilmeden önce verilerin sıkıştırma işlemi başlar ve son bulur. Bu verileri karşılayacak olan tarayıcılar da (verilerle uyumlu olan tarayıcılar) verilerin doğru biçimini indirmeden önce sunucu ile iletişime geçer ve sunucuya hangi yöntemlerin desteklendiğini duyurur. Eğer uyumlu sıkıştırma yöntemlerini tarayıcılar desteklemiyorsa, verilerin sıkıştırılmamış olan halleri indirilir. Sıkıştırma konusunda elde bulunan planların tam listesi de IANA tarafından sağlanır. Yaygın bir biçimde kullanılan sıkıştırma şemaları ise genel olarak Brotli ve Gzip’tir.

HTTP’de yapılacak olan sıkıştırmalar adına “daha düşük bir seviye” ve “daha yüksek bir seviye” olmak üzere iki farklı yol bulunmaktadır. Daha düşük seviyede bir “HTTP” mesajının yükünün sıkıştırılabileceğini örnek verirsek, daha yüksek bir seviyede için de bir içerik kodlama başlık alanının, aktarılan bir verinin, başka bir biçimde başvurulmuş olan ya da önbelleğe alınmış olan herhangi bir kaynağın sıkıştırılmış olabileceğini örnek olarak sunabiliriz.

İçerik kodlama, bazı tarayıcıların, sunucularda bulunan hataların devreye girmesini önlemek adına Aktarım Kodlama’sının sıkıştırma desteğinin reklamlarını yayınlamaz ve Aktarım Kodlama’ya göre daha yaygın bir biçimde desteklenir.

Sıkıştırma şemasını biraz daha detaylandıralım. RFC 2616’da yayınlanması ile birlikte anlaşmalar şu iki adımdan oluşur:

  1. Daha önce istemci ve sunuculardan bahsetmiştik. İşte bunlardan biri olan web istemcisi, istenmiş olan HTTP ile belirtilen isteğine belirteç listesi ekler ve destekleyecek olduğu sıkıştırma şemalarını paylaşır.
  2. Sunucunun ise bir ya da birden fazla sıkıştırma temasına desteği varsa gönderilen veriler bu sayede her iki tarafın da desteklemesi ile birlikte bir ya da daha fazla yöntem kullanılarak sıkıştırılabilirler. Bu durumun sonucunda da sunucu, HTTP yanıtında kullanılmış olan şemaları virgülle ayırarak, bir adet aktarma kodlama alanı ya da içerik kodlama alanı ekleyecektir.

Web sunucusu ne olursa olsun herhangi bir sıkıştırma yöntemini seçerek kullanmak zorundadır.

İçerik Kodlama Belirteçleri

Yukarıdaki paragrafta da bahsetmiş olduğumuz üzere IANA’nın istemciler ve sunucular adına listesinde bulundurduğu mevcut belirteçler şunlardır:

  • Exi – W3C verimli bir XML değişim biçimidir.
  • Pack200 – gzip – Java arşivleri adına bir ağ aktarım biçimidir.
  • Zstd – RFC 8478’de tanımlanmış olan Zstandart’ı sıkıştırma biçimidir.
  • Gzip – GNU zip formatıdır. Sıkıştırma adına söndürme algoritmasını kullanır. Ancak veri formatı ile sağlama toplamı algoritması olarak “söndürme” içerik kodlamasından farklıdır. Yine de bu yöntem Mart 2011’den itibaren en yaygın kullanıma ulaşan ve oldukça desteklenen biçimdir.
  • Brotli (BR) – özellikle HTTP içeriklerinin kodlanabilmesi adına tasarlanmıştır ve RFC 7932’de de tanımlanmıştır. Bununla birlikte tüm modern ve büyük tarayıcılarda uygulanmaktadır. Bir sıkıştırma algoritması biçimidir.
  • Sıkıştır – UNIX “sıkıştır” program yöntemi olan bir biçimdir.
  • Deflate – Tarihçesi Deflate algoritmasına dayanan bir sıkıştırma biçimidir.

Gzip sıkıştırması nedir, ne işe yarar öğrenmek için buraya tıklayabilirsiniz.

Yukarıdaki içerik kodlama belirteçlerine ek olarak, istemciler ya da sunucular tarafından bir dizi sıradanlaştırılmamış ama resmi olmayan jetonlar kullanılır. Bunları da aşağıda bulabilirsiniz:

  • Bzip2 – Lighttpd tarafından desteklenmiş ve ücretsiz bzip2 formatına dayalı olan sıkıştırma biçimidir.
  • Izma – LZMA’ya dayanan sıkıştırma biçimidir. Opera 20’de de derleme zamanı seçeneği aracılığıyla kulanıcıların beğenisine sunulmaktadır.
  • Peerdist biçimi.
  • Rsync – Bir çift rpoxy proxy’si tarafından uygulanıma sunulan biçimdir.
  • Xpress – Windows mağazası ile birlikte uygulama güncellemeleri için de kullanıma sunulan bir Microsoft sıkıştırma biçimidir. İsteğe bağlı bir biçimde gerçekleştirilir. Ayrıca, Huffman kodlaması kullanılarak da LZ77 tabanlı sıkıştırma biçimi kullanılabilir.
  • XZ – Resmi olmayan ve bir Firefox yaması ile desteklenerek kullanılan LZMA2 tabanlı içerik sıkıştırma biçimidir.

Hızlı bir site Brotli sıkıştırmasını kullanabilirsiniz. Detaylı bilgiye buradan ulaşabilirsiniz.

HTTP Sıkıştırmasını Destekleyen Sunucular

İçerik kodlama belirteçlerinden ve sıkıştırma listesinden bahsettikten sonra gelelim bahsettiğimiz HTTP protokolü sıkıştırmalarına desteklerini sunan sunucu çeşitlerine. Bu sunucu alternatifleri aşağıdaki gibidir:

  • Microsoft ISS sunucusu
  • SAP NetWeaver sunucusu
  • Apache HTTP sunucusu
  • Cherokee HTTP sunucusu
  • Hiawatha HTTP sunucusu
  • Zeus Web sunucusu
  • Lighttpd sunucusu
  • Nginx sunucusu
  • Jetty sunucusu
  • GeoServer sunucusu
  • Apache Tomcat sunucusu
  • AOL sunucusu
  • IBM Websphere sunucusu
  • Ruby Rack sunucusu
  • HAProxy sunucusu
  • Varnish sunucusu
  • Armeria sunucusu
  • NaviServer sunucusu
  • Tornado tabanlı işleyen uygulamalar.

HTTP Sıkıştırmalarının Güvenliğe Etkileri

Sıkıştırmalar, seçilmiş olan düz metin saldırılarının bazı biçimlerinin gerçekleştirilebilmelerine olanak tanır. Eğer ard niyetli bir kullanıcının yani bir saldırganın, seçmiş olduğu herhangi bir içeriği var olan sayfaya enjekte etme girişimi başarı ile sonuçlanırsa, var olan şifreli akışların boyutlarında da artış gözlemlenebilir. Bu da sayfanın verilen içeriği kapsamadığının öğrenebilmesine olanak sağlar. Kötü amaçlı kullanıcılar tarafından rastgele enjeksiyonların gerçekleştirilmesindeki artış her ne kadar beklenenden az olsa bile sıkıştırılmış metinlerde tekrara düşülebilir. Bu da enjekte edilmiş içeriklerin gizli bilgi ile örtüşmesi anlamına gelir. Ard niyetli saldırganların suçlarının arkasındaki ana fikir de bu mekanizmaya dayanır.

2012 yılında “CRIME” adının verilmiş olduğu veri sıkıştırma biçiminde gerçekleştirilen genel bir saldırı duyurusunda bulunuldu. Gerçekleştirilen bu saldırı, TLS de dahil olmak üzere birçok protokolde etkili bir biçimde çalıştırıldı. Tarayıcı ve sunucularda her ne kadar TLS ve SPDY’ye yönelik gerçekleştirilen istismarlar göz önünde tutulsa ve bu istismarlar büyük oranda hafifletildi. Öte yandan CRIME’ın geliştiricileri, keşfedilen güvenlik açığının SPDY ile TLS sıkıştırmalarının birleşimlerinden bile daha yaygın olabilecekleri konusunda uyarılarda bulundular. Buna rağmen, HTTP sıkıştırmasına karşı gerçekleştirilen suç istismarları hiçbir şekilde azaltılamamıştır.

TLS nedir, ne işe yarar detaylı olarak buradan öğrenebilirsiniz.

Bir yılın ardından, 2013 yılında kendilerini “BREACH” olarak adlandıran bir grup, HTTP sıkıştırmasına karşı CRIME saldırının yeni birer örneğini yayınladı. Gerçekleştirilen bir BREACH saldırısı ile kötü amaçlı kullanım gerçekleştiren kullanıcının yani saldırganın, kurbanı art niyetli bir web bağlantısını ziyaret etmesi için kandırması üzerine, TLS ile şifrelenmiş olan web trafiğinden de yararlanarak sırasıyla; oturum açma belirteçleri, e-posta adresleri veya buna benzer çoğu hassas bilgiyi de otuz saniye kadar kısa bir süre içerisinde elde edebileceğini göstermiştir.

Kullanılmış olan parolama algoritması ya da parolanın ne olduğu fark etmeksizin TLS ve SSL’in tüm sürümleri, BREACH’ın riski ile tehlike altındadır. Daha önce işlenmiş olan suç örneklerinden farklı olarak da TLS sıkıştırmasını ya da SPDY’nin başlık sıkıştırmalarını kapatabilerek başarılı bir biçimde savunabilen BREACH ise tüm web sunucu kullanıcıları adına veri aktarım hızlarını daha sağlıklı bir hale getirmeyi hedefler. Bu doğrultuda HTTP sıkıştırmasından yararlanılır.

HTTP Compression Header Faydaları Nelerdir?

Yukarıda da bahesildiği üzere “HTTP Compression Header”ın birden fazla faydası bulunmaktadır. Bunlardan en önemlisi ve gözle görülebilir olanı; istemciler ve sunucular arasındaki hızlı ve sağlıklı iletişimi sağlanmasıdır. Tespit edilen bir diğer fayda ise kötü amaçlı kullanıcıların saldırılarına karşı sağladığı güvenlik önlemleri olmuştur. HTTP sıkıştırma yöntemi içeriğin sunucudan ayrılmadan önce sıkıştırılmasına olanak tanır. Dolayısıyla mesajın boyutları azalır ve ağdaki bant genişliği gereksinimi azalır. Bu sebeple de veriyi indirme süresi de düşer. Yani veri transferi hızlanmış olur.

0 Shares:
Benzer İçerikler
Devamını Oku

Gzip Nedir?

Bu İçerikte Bahsedilen Konular Gzip Sıkıştırmasının Kullanım Amacı Nedir?Gzip Desteği Veren Tarayıcılar Hangileridir?Gzip Sıkıştırma İşlemi Nasıl Gerçekleşir?Gzip WordPress…