GET ile POST Arasındaki Fark
Bu yazıda en yaygın iki HTTP talep methodu olan GET ve POST'un arasındaki farklardan bahsedilecektir. Bu farklara geçmeden önce GET ve POST'un nerelerde kullanıldığına değinelim. GET ve POST birer HTML Talep methodlarıdır. Yani GET ve POST ile sunucudan sayfa talebinde bulunabildiğimiz gibi aynı zamanda sunucuya veri de gönderebiliriz. Bu iki HTTP Talep methodu dışında başka HTTP talep methodları da vardır(Örn; HEAD, PUT, DELETE, OPTIONS ve CONNECT gibi...). Bu yazıda GET ve POST dışındaki HTTP Talep methodlarından bahsedilmeyecektir.

Şimdi GET ile POST'un arasındaki farkına geçelim: GET methodu ile bir html formundan gönderilen veri herkes için görünürdür. Çünkü tüm gönderilen değişkenler ve değerleri URL'ye yerleşir. POST methodunda ise html formundan gönderilen veriler HTML dosyasının body'sine gömülü bir şekilde sunucuya gittiklerinden dolayı bu veriler başka kişiler tarafından görünür değildir. Dolayısıyla POST'un bir güvenlik avantajı vardır. GET ile POST'un bir diğer farkı şudur ki GET ile veri göndermede karakter limiti varken POST'ta böyle bir limit yoktur. POST ve GET arasında bahsettiğimiz farklara bakacak olursanız sanki POST methodu GET'e göre daha avantajlı duruyor değil mi? Fakat POST'un avantajları olduğu gibi GET'in de avantajları vardır. Şimdi GET'i ön plana çıkaran bir farktan bahsedelim. GET ile değişkenler URL'de yer aldığı için sayfayı değişken değerleri kaybolmadan yer imlerine atmak mümkündür. Yani GET ile bir sayfa içeriğini sunucudan almak için tekrar tekrar forma veri girmeler ya da sayfa içi tıklamalar yapılmasına gerek yoktur. Dolayısıyla hazır URL'yi yer imlerine atarak kullanıcı zahmetten kurtarılmış olur. POST'ta ise kullanıcı daha önce geldiği aşamaya(sayfa içeriğine) tekrar varabilmek için forma veri girme ya da tıklama zahmetlerine katlanmak zorundadır. GET'in POST'a karşı bu avantajına mukabil GET'in POST'a karşı bir diğer dezavantajı şudur: multi-part binary türündeki verilerin gönderimi. "multi-part binary" ile kastedilen şey dosyadır. Mesela resimdir. POST ile forma bir resim koyup sunucuya upload edebiliriz. Fakat GET ile bu mümkün değildir. Aşağıda GET ve POST'un daha kapsamlı farkını inceleyebilirsiniz:

GET POST
Geri Butonu, Sayfa Yenileme Butonu Varılan sayfa kaybolmaz. Varılan sayfa için Re-Submit popup'ı görüntülenir.
Yer İmleme Mümkün Mümkün değil
Önbelleğe Kaydedilme Mümkün Mümkün değil
Kodlama Tipi(Encoding Type) application/x-www-form-urlencoded[1] application/x-www-form-urlencoded[1] ya da multipart/form-data[2]
Tarayıcı Geçmişi Değişkenler tarayıcı geçmişinde kalır Değişkenler tarayıcı geçmişine kaydedilmez
Karakter Limiti 2048 karakter Limit yok
Veri Tipi Kısıtlaması Sadece ASCII karakterleri izinlidir Sınırlama yoktur(Binary tipli veri izinlidir)
Güvenlik GET POST'a göre daha az güvenlidir, çünkü gönderilen veri URL'nin bir parçasını teşkil eder. POST GET'e göre biraz daha güvenlidir, çünkü gönderilen değişken ve değerleri tarayıcı geçmişinde ya da sunucu log'larında depolanmaz.
Görünürlük URL'deki veri herkes tarafından görünürdür. Veri URL'de gösterilmez.

[1] Varsayılan kodlama tipi budur. Tüm karakterler sunucuya gönderilmeden önce kodlanır. Yani boşluklar + yapılır, özel karakterler ASCII karşılıklarına dönüştürülür.

[2] Kodlanacak bir karakter yoktur. Bu kodlama tipi dosya yükleme kodlarını içeren bir form kullanıldığında gereklidir.



Bu farkları gördükten sonra eğer bir web geliştiricisi iseniz POST'u mu yoksa GET'i mi kullanacağınıza artık karar verebilirsiniz. Bu arada Web geliştiricileri form verisi göndermede genellikle POST'u tercih etmektedirler. Bunu da not olarak düşmüş olalım. Eğer GET'i tercih edeceklerdenseniz hassas verileri(mesela kullanıcı adı ve şifreyi) iletirken değişken ve değerleri URL'de görüneceğinden bunları POST ile iletmeye özen gösteriniz. Yoksa başkalarına hesap bilgilerini kaptırabilirsiniz. Eğer POST'u tercih edeceklerdenseniz kullanıcıya çok zahmet vermemek adına kritik olmayan noktalarda GET'i kullanabilirsiniz.

Kaynak :

Bu yazı 18.06.2015 tarihinde, saat 18:40:37'de yazılmıştır. 22.08.2024 tarihi ve 20:02:51 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 15562
Yorumlar
Yusuf Kara
Merhaba Bu get istekleri uzerinde olusan http başlık enjeksıyonu hakkında bır bılgınız varmıdır.?
Bu yorum 01.02.2019 tarihinde, saat 12:44:47'de gönderilmiştir.
Hasan Fatih ŞİMŞEK
Sorunuzu net anlayamadım, fakat anladığım kadarıyla cevap verecek olursam web uygulamasını kullanan kullanıcıların (aynı zamanda saldırganların) GET talebi ile gönderdiği değerlere satır atlatma kodu (karakterleri) ilave etmeleri halinde bu kod sonrasına eklenecek kendi başlıklarıyla http başlık enjeksiyonu faaliyetinde bulunabilirler. Detaylı açıklamalar için bkz. Ders 3 - General Http Split
Bu yorum 21.03.2019 tarihinde, saat 16:46:01'de gönderilmiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :