HTTP Dersleri – Ders 3 – İstemci Kimliği

HTTP Dersleri – Ders 1 – Temel kavramlara genel bakış
HTTP Dersleri – Ders 2 – Mimari Yönleri
HTTP Dersleri – Ders 3 – İstemci Kimliği
HTTP Dersleri – Ders 4 – İstemci Doğrulama Mekanizmaları
HTTP Dersleri – Ders 5 – Güvenlik
HTTP Dersleri – Sözlük

Şimdiye kadar, HTTP’nin mimari yönlerinin temel kavramlarını ve bazılarını öğrendiniz. Bu, bizi HTTP için bir sonraki önemli konuya götürür: istemci tanımlama.

Bu makalede, istemci tanımlamasının neden önemli olduğunu ve Web sunucularının sizi (Web istemcinizi) nasıl tanımlayabileceğini öğreneceksiniz. Ayrıca, bu bilgilerin nasıl kullanıldığını ve saklandığını göreceksiniz.

Bu makalede, aşağıdakiler hakkında daha fazla bilgi edineceksiniz:

  • İstemci kimliği ve neden son derece önemli
  • İstemciyi tanımlamak için farklı yollar
  • Tanımlama için kullanılan HTTP istek üstbilgileri
  • IP adresi
  • Uzun (fat) URL’ler
  • Çerezler (Cookie)

Öncelikle, neden web sitelerinin sizi tanıması gerektiğini görelim.

İstemci Kimliği ve Neden Son Derece Önemli

Farkında olduğunuz gibi, her web sitesi, en azından sizin ve eylemleriniz hakkında yeterince ilgilenenler, bazı içerik kişiselleştirmeler içerir.

Bununla ne demek istiyorum?

Bu kişiselleştirmeler, e-ticaret sitelerine girdiğinizde tavsiye edilen ürünler, sosyal medyada “tanıyabileceğiniz/eklemek isteyebileceğiniz kişiler” tavsiyeleri, tavsiye edilen videolar, neye ihtiyacınız olduğunuzu bilen reklamlar, ilginizi çekebilecek makaleler gibi şeylerdir.

Bu durum kendini iki kenarlı bir kılıç gibi hissettirir. Bir taraftan, kişiselleştirilmiş, özel içeriğin size teslim edilmesi oldukça güzel. Öte yandan, her çeşit kilişe ve önyargıya yol açabilir.

Ancak, en sevdiğim takımın dün gece nasıl gol attığını veya geçen gece hangi ünlülerin yaptıklarını bilmeden nasıl yaşayabiliriz?

Her iki durumda da, içerik kişiselleştirme günlük yaşantımızın bir parçası haline geldi ve muhtemelen bu konuda herhangi bir şey yapmak istemiyoruz.

Web sunucularının bu etkiyi elde etmek için sizi nasıl tanımlayabileceğini görelim.

İstemciyi Tanımlamak İçin Farklı Yöntemler


Bir Web sunucusunun sizi tanımlayabileceği çeşitli yollar vardır:

  • HTTP istek üstbilgileri
  • IP adresi
  • Uzun URL’ler
  • Çerezler (Cookie)
  • Giriş bilgileri (kimlik doğrulama)

Hepsinin üzerinden geçelim. HTTP kimlik doğrulaması, HTTP Dersleri 4. bölümünde daha ayrıntılı olarak açıklanmaktadır.

Tanımlama İçin Kullanılan HTTP İstek Üstbilgileri

Web sunucularının sizin hakkınızdaki bilgileri doğrudan HTTP istek üstbilgilerinden ayıklamanın birkaç yolu vardır.

Bu başlıklar şunlar:

  • From – kullanıcının e-posta adresini içeriyorsa içeriyor
  • User-Agent – Web istemcisi hakkında bilgi içerir
  • Referer – Kullanıcının geldiği kaynağı içeriyor
  • Authorization – kullanıcı adı ve şifre içeriyor
  • Client-ip – kullanıcının IP adresini içerir
  • X-Forwarded-For – kullanıcının IP adresini içerir (proxy sunucusuna giderken)
  • Cookie – sunucu tarafından üretilen kimlik etiketi içeren çerezlerdir

Teorik olarak, From başlığı kullanıcının benzersiz şekilde tanımlanması için ideal olacaktır, ancak uygulamada, e-posta toplamanın güvenlik kaygısı nedeniyle bu başlık çok nadiren kullanılır.

User-Agent üstbilgisi, tarayıcı sürümü, işletim sistemi gibi bilgileri içerir. Bu, içeriği özelleştirmek için önemli olsa da, kullanıcıyı daha alakalı bir şekilde tanımlamaz.

Referer başlığı, sunucuya kullanıcının nereden geldiğini bildirir. Bu bilgi, kullanıcı davranışını anlamayı artırmak için kullanılır, ancak bunu tanımlamak için daha az kullanılır.

Bu üstbilgiler istemci hakkında bazı yararlı bilgiler sağlarken, içeriği anlamlı bir şekilde kişiselleştirmek yeterli değildir.

Geriye kalan başlıklar daha kesin tanımlama mekanizmaları sunar.

IP adresi

IP adresleri tarafından istemci tanımlama yöntemi, IP adreslerinin o kadar kolayca sahte/takas üretilmediği zamanlarda çokca kullanılmıştır. Ek bir güvenlik kontrolü olarak kullanılabilse de, kendi başına kullanılacak kadar güvenilir değildir.

İşte nedenlerinden bazıları:

  • Kullanıcıyı değil, makineyi tanımlıyor
  • NAT güvenlik duvarları – Birçok ISS (İnternet servis sağlayıcı), güvenliği artırmak ve IP adresi yetersizliği ile uğraşmak için NAT güvenlik duvarlarını kullanıyor
  • Dinamik IP adresleri – kullanıcılar genellikle ISP’den dinamik IP adresini alırlar
  • HTTP vekilleri ve ağ geçitleri – bunlar orijinal IP adresini gizleyebilir. Bazı proxy’ler, orijinal IP adresini korumak için Client-ip veya X-Forwarded-For’u kullanır

Uzun (fat) URL’ler

Kullanıcı deneyimini iyileştirmek için web sitelerinin URL’leri kullandığını görmek nadir değildir. Kullanıcı web sitesine göz atarken, URL’ler karmaşık ve okunamaz olana kadar bilgi ekliyorlar.

Amazon mağazasına göz atarak uzun URL’nin nasıl göründüğünü görebilirsiniz.

https://www.amazon.com/gp/product/1942788002/ref=s9u_psimh_gw_i2?ie=UTF8&fpl=fresh&pd_rd_i=1942788002&pd_rd_r=70BRSEN2K19345MWASF0&pd_rd_w=KpLza&pd_rd_wg=gTIeL&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=&pf_rd_r=RWRKQXA6PBHQG52JTRW2&pf_rd_t=36701&pf_rd_p=1cf9d009-399c-49e1-901a-7b8786e59436&pf_rd_i=desktop

Bu yaklaşımı kullanırken çeşitli sorunlar var.

  • Çirkin
  • Paylaşılamaz
  • Önbelleği keser
  • Bulunan oturumla sınırlı
  • Sunucu üzerindeki yükü artırır

Çerezler (Cookie)

Kimlik doğrulama hariç, en güncel istemci tanımlama yöntemi. Netscape tarafından geliştirilmiştir, ancak şimdi her tarayıcı bunları destekliyor.

İki çerez türü vardır: oturum çerezleri ve kalıcı çerezler. Oturum çerezleri, oturum tanımlama bilgisi tarayıcıdan çıktığında silinir fakat kalıcı çerezler diske kaydedilir ve daha uzun kullanılabilir. Oturum çerezinin kalıcı çerez olarak ele alınabilmesi için, Max-Age veya Expiry parametrelerinin ayarlanması gerekir.

Chrome ve Firefox gibi modern tarayıcılar, kapattığınızda arka plan süreçlerini çalışmaya devam ettirebilir, böylece kaldığınız yerden devam edebilirsiniz. Bu, oturum çerezlerinin korunmasına neden olabilir, bu yüzden dikkatli olun.

Peki çerezler nasıl çalışır?

Çerezler, sunucu tarafından Set-Cookie veya Set-Cookie2 yanıt başlığını kullanarak ayarlanan isim = değer çiftlerinin bir listesini içerir. Genellikle, çerezde saklanan bilgiler bir tür istemci kimliğidir, ancak bazı web sitelerinde başka bilgiler de depolanır.

Tarayıcı, bu bilgileri çerez veritabanında saklar ve bir dahaki sefer kullanıcı sayfayı / web sitesini ziyaret ettiğinde onu döndürür. Tarayıcı binlerce farklı çerezleri işleyebilir ve her birine ne zaman hizmet vereceklerini bilir.

İşte örnek bir akış.

1. User-Agent -> Sunucu

POST /acme/login HTTP/1.1
[form data]

2. Sunucu -> User-Agent

HTTP/1.1 200 OK
Set-Cookie2: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"

Sunucu, User-Agent’ına (tarayıcı), kullanıcı hakkında bir tanımlama bilgisini ayarlamasını söylemek için Set-Cookie yanıt başlığını gönderir.

3. User-Agent -> Sunucu

POST /acme/pickitem HTTP/1.1
Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"
[form data]

Kullanıcı öğeyi dükkan sepetine seçer.

4. Sunucu -> User-Agent

HTTP/1.1 200 OK
Set-Cookie2: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"

Alışveriş sepeti artık bir ürün içeriyor.

5. User-Agent -> Sunucu

POST /acme/shipping HTTP/1.1
Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme";
        Part_Number="Rocket_Launcher_0001";
[form data]

Kullanıcı kargo yöntemini seçiyor.

6. Sunucu -> User-Agent

HTTP/1.1 200 OK
Set-Cookie2: Shipping="FedEx"; Version="1"; Path="/acme"

Yeni çerez, gönderim yöntemini yansıtıyor.

7. User-Agent -> Sunucu

POST /acme/process HTTP/1.1
Cookie: $Version="1";
        Customer="WILE_E_COYOTE"; $Path="/acme";
        Part_Number="Rocket_Launcher_0001"; $Path="/acme";
        Shipping="FedEx"; $Path="/acme"
[form data]

İşte bu kadar.

Farkında olmanızı istediğim bir şey daha var. Çerez de mükemmel değildir. Güvenlik kaygılarının yanı sıra, çerezlerin REST mimari stili ile çalışmasında bir sorun var. (Çerezleri kötüye kullanmakla ilgili bölüm).

Çerezler hakkında RFC 2965‘de daha fazla bilgi bulabilirsiniz.

Sonuç

İçeriğin kişiselleştirilmesinin güçlü yanları ve potansiyel tuzaklardan öğrendiniz. Ayrıca, sunucuların sizi tanımak için kullanabileceği farklı yöntemlerin farkındasınız. Serinin 4. bölümünde, istemci tanımlamasının en önemli türü hakkında konuşacağız: kimlik doğrulama.

Bu bölümdeki kavramlardan bazılarını belirsiz buluyorsanız, HTTP serisinin 1. ve 2. bölümlerine bakın.

Okuduğunuz için teşekkür ederiz ve yorum yazmaktan çekinmeyin.

Sonraki Ders: HTTP Dersleri – Ders 4 – İstemci Doğrulama Mekanizmaları

Referanslar;

Orijinal Yazı:

https://www.code-maze.com/http-series-part-3/

5 1 vote
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments