Anormal bir durumu tespit etmek için önce teknolojinin nasıl çalıştığını anlamamız gerekir. Uygulamalar, birbirleriyle doğru bir şekilde iletişim kurmak için belirli protokolleri kullanır. Web uygulamaları, Köprü Metni Aktarım Protokolü (HTTP) aracılığıyla iletişim kurar. HTTP protokolünün nasıl çalıştığına bakalım.
Başlangıç olarak, HTTP protokolünün OSI modelinin 7. katmanında olduğunu bilmeliyiz. Bu, HTTP protokolünden önce Ethernet, IP, TCP ve SSL gibi protokollerin kullanıldığı anlamına gelir.
HTTP
iletişimi, sunucu ve istemci arasında gerçekleşir. İlk olarak, istemci
sunucudan belirli bir kaynak ister. Sunucu, HTTP isteğini alır ve belirli
kontroller ve işlemlerden geçirdikten sonra istemciye bir (HTTP Yanıtı) geri
gönderir. İstemcinin cihazı yanıtı alır ve istenen kaynağı uygun bir biçimde
görüntüler.
HTTP İstekleri
Bir web sunucusundan belirli bir kaynağı almak için bir HTTP İsteği kullanılır. Bu kaynak bir HTML dosyası, video vb. olabilir. Web sunucusunun görevi alınan yanıtı işlemek ve kullanıcıya sunmaktır.
Standart bir HTTP biçimi vardır ve web sunucularının isteği anlayabilmesi için tüm istekler bu biçime uymalıdır. Talep farklı bir formatta gönderilirse, web sunucusu bunu anlamaz ve kullanıcıya bir hata gönderir veya web sunucusu hizmet sağlayamayabilir (ki bu başka bir saldırı türüdür).
Bir HTTP İstek satırı, bir istek satırından, istek başlıklarından ve bir istek mesajı gövdesinden oluşur. Bir istek satırı, HTTP yönteminden ve web sunucusundan istenen kaynaktan oluşur. İstek başlığı, sunucunun işleyeceği belirli başlıkları içerir. İstek mesajı gövdesi, sunucuya gönderilmesi amaçlanan verileri içerir.
Yukarıdaki resimde bir HTTP İsteği örneği görüyoruz. Bu HTTP İsteğini satır satır inceleyelim.
- GET yöntemi, “/” kaynağının sunucudan istendiğini belirtir. İsim olmadığı için “/” gibi bir sembol, web sunucusunun ana sayfasının istendiği anlamına gelir.
- Günümüzde tek bir web sunucusunda bulunan birden fazla etki alanına ait web uygulamaları vardır, bu nedenle tarayıcılar, istenen kaynağın hangi etki alanına ait olduğunu açıklamak için “Host” başlığını kullanır.
- Bir web uygulaması, müşterinin cihazında bilgi depolamak istediğinde, bunu bir “Çerez” başlığında saklar. Çerezler genellikle oturum bilgilerini saklamak için kullanılır. Bu nedenle, giriş gerektiren bir web uygulamasını ziyaret ettiğinizde kullanıcı adınızı ve şifrenizi yeniden girmeniz gerekmez.
- "Upgrade-Insecure-Requests" başlığı, istemcinin şifreleme (SSL) ile iletişim kurmak istediğini belirtmek için kullanılır.
- "User-Agent" başlığı altında istemcinin tarayıcısı ve işletim sistemi ile ilgili bilgiler bulunmaktadır. Web sunucuları, istemciye belirli HTTP Yanıtları göndermek için bu bilgileri kullanır. Bu başlığın altına bakarak bazı otomatik güvenlik açığı tarayıcılarını bulabilirsiniz.
- İstenen veri türü “Kabul Et” başlığı altında bulunur.
- İstemcinin anladığı kodlama türü “Kabul Et-Kodlama” başlığı altında bulunur. Genellikle bu başlık altında sıkıştırma algoritması adlarını bulabilirsiniz.
- “Accept-Language” başlığının altında istemcilerin dil bilgilerini bulabilirsiniz. Web sunucusu, hazırlanan içeriği istemcinin dilinde görüntülemek için bu bilgileri kullanır.
- “Bağlantı” başlığı, HTTP bağlantısının nasıl yapılacağını gösterir. Burada bulunan “kapat” gibi bir veri varsa, HTTP yanıtı alındıktan sonra TCP bağlantısının kapatılacağı anlamına gelir. “Canlı tut” ifadesini görürseniz bu, bağlantının devam edeceği anlamına gelir.
- Bir bölüm oluşturmak için HTTP İstek Başlığı ile HTTP İstek İleti Gövdesi arasına boş bir satır konur.
- Web uygulamasına gönderilmesi amaçlanan diğer veriler, İstek Mesajı Gövdesinde bulunur. HTTP POST yöntemi kullanılıyorsa, POST parametreleri burada bulunabilir.
HTTP Yanıtları
Web sunucusu bir HTTP İsteği aldığında, gerekli kontrolleri ve işlemleri gerçekleştirir ve ardından istenen kaynağı istemciye gönderir. Burada tek tip bir süreç yoktur çünkü çok sayıda teknoloji ve tasarım söz konusudur. Sunucu, talep edilen kaynağın ne olduğuna göre veritabanından veri çekebilir veya gelen verilere göre işlem yapabilir. Ancak HTTP Yanıt Mesajı, tüm işlemlerden sonra istemciye ulaşmalıdır.
Bir HTTP Yanıt İletisi, bir Durum Satırı, Yanıt Başlıkları ve bir Yanıt Gövdesi içerir. Durum Satırı, durum kodunu (örneğin, 200: OK) ve HTTP protokol bilgilerini içerir. Response Header içerisinde çok sayıda amaç için kullanılan başlıklar bulunmaktadır. Talep edilen kaynakla ilgili veriler, Müdahale Gövdesinde bulunur.
Bir web sayfası istendiyse, Yanıt Gövdesinde genellikle HTML kodları olacaktır. İstemci HTML kodunu aldığında, web tarayıcısı HTML kodunu işler ve web sayfasını görüntüler.
Yukarıdaki resimde bir HTTP Yanıt isteği görebilirsiniz. Bu görüntüye dayalı bir HTTP Yanıt isteğini inceleyelim.
Durum Satırı
Durum Satırında HTTP sürümü ve HTTP yanıtı durum kodu hakkında bilgi vardır. HTTP yanıt durum kodu, isteğin durumunu açıklamak için kullanılır. Birçok HTTP yanıt durum kodu vardır, ancak bunlar şu şekilde özetlenebilir:
- 100-199 : Bilgilendirici yanıtlar
- 200-299 : Başarılı yanıtlar
- 300-399 : Yönlendirme mesajları
- 400-499 : İstemci hata yanıtları
- 500-599 : Sunucu hatası yanıtları
Yanıt Başlıkları
İşte sık karşılaşabileceğiniz bazı HTTP Yanıt Başlıkları:
- Tarih : Sunucunun istemciye HTTP Yanıtı gönderdiği tam saat.
- Bağlantı : Tıpkı HTTP İsteği başlığında olduğu gibi bağlantının nasıl işleneceğini belirtir.
- Sunucu : Sunucunun işletim sistemi ve web sunucusunun sürümü hakkında bilgi.
- Last-Modified : İstenen kaynağın ne zaman değiştirildiği hakkında bilgi. Bu başlık, önbellek mekanizması için kullanılır.
- İçerik Türü : Gönderilen veri türü.
- Content-Length : Gönderilen verinin boyutu
Yanıt Gövdesi
HTTP Yanıt Gövdesi, sunucu tarafından gönderilen ve istemci tarafından istenen kaynağı içerir.Soru 1
Cevap: Application
Yukarıda http protokolünün OSI Modelinin 7. Katmanında olduğunu söylemiştik. OSI Modelinde 7. Katmanın adı Application katmanıdır.
Soru 2
Hangi HTTP İsteği başlığı tarayıcı ve işletim sistemi bilgilerini içerir?
Cevap: User-Agent
"User-Agent" başlığı altında istemcinin tarayıcısı ve işletim sistemi ile ilgili bilgiler bulunmaktadır.
Soru 3
Cevap:200
HTTP yanıt durum kodlarından bahsettik ve 200 yanıt durum kodunun isteğin başarılı olduğunu gösteren kod olduğunu öğrenmiş olduk.Soru 4
Hangi HTTP İstek Yöntemi, gönderilen parametrelerin İstek URL'sinde görünmemesini sağlar?
0 Yorumlar