GET
Veya POST
yöntemi kullanırken fark nedir ? Hangisi daha güvenli? Her birinin (dis) avantajları nelerdir?
( benzer soru )
GET
Veya POST
yöntemi kullanırken fark nedir ? Hangisi daha güvenli? Her birinin (dis) avantajları nelerdir?
( benzer soru )
Yanıtlar:
Bu bir güvenlik meselesi değil. HTTP protokolü GET türü istekleri idempotent olarak tanımlar , ancak POST'lerin yan etkileri olabilir. Düz İngilizce'de bu, GET'in bir şeyi değiştirmeden görüntülemek için kullanıldığı, POST ise bir şeyi değiştirmek için kullanıldığı anlamına gelir. Örneğin, bir arama sayfasında GET, parolanızı değiştiren bir formda POST kullanılmalıdır.
Ayrıca, PHP'nin kavramları biraz karıştırdığını unutmayın. Bir POST isteği, sorgu dizesinden ve istek gövdesinden girdi alır. Bir GET isteği yalnızca sorgu dizesinden girdi alır. Dolayısıyla, bir POST isteği bir GET isteğinin bir üst kümesidir; Kullanabileceğiniz $_GET
POST isteğinde ve hatta aynı adla parametrelere sahip mantıklı olabilir $_POST
ve $_GET
bu ortalama farklı şeyler.
Örneğin, bir makaleyi düzenlemek için bir formunuz olduğunu varsayalım. Makale kimliği sorgu dizesinde olabilir (ve bu yolla kullanılabilir $_GET['id']
), ancak diyelim ki makale kimliğini değiştirmek istiyorsunuz. Yeni kimlik daha sonra istek gövdesinde ( $_POST['id']
) bulunabilir. Tamam, belki de bu en iyi örnek değil, ama umarım ikisi arasındaki farkı gösterir.
Kullanıcı bir forma bilgi girip Gönder'i tıklattığında, bilgilerin tarayıcıdan sunucuya gönderilmesinin iki yolu vardır: URL'de veya HTTP isteğinin gövdesi içinde.
Daha önceki örnekte kullanılan GET yöntemi, URL'ye ad / değer çiftlerini ekler. Ne yazık ki, bir URL'nin uzunluğu sınırlıdır, bu nedenle bu yöntem yalnızca birkaç parametre varsa çalışır. Form çok sayıda parametre kullanıyorsa veya parametreler çok miktarda veri içeriyorsa URL kesilebilir. Ayrıca, URL'ye iletilen parametreler, bir şifrenin görüntülenmesi için en iyi yer değil, tarayıcının adres alanında görünür.
GET yönteminin alternatifi POST yöntemidir. Bu yöntem, HTTP isteğinin gövdesi içindeki ad / değer çiftlerini paketleyerek daha temiz bir URL oluşturur ve form çıktısına boyut sınırlaması getirmez. Ayrıca daha güvenlidir.
İlk cevap en iyisiydi.
Kullanıyorsun:
GET
mükemmel bir şekilde 'veri' gönderebilir, bu yüzden çok doğru bir cevap değildir.
Kullanmanın iki yaygın "güvenlik" etkisi vardır GET
. Veriler URL dizesinde göründüğünden, Adres Çubuğu / URL'de omzunuzun üzerinden bakan olası biri, oturumunuzu ele geçirmek için potansiyel olarak kullanılabilecek bir oturum çerezi gibi özel olmaması gereken bir şeyi görüntüleyebilir. Herkesin kameralı cep telefonu olduğunu unutmayın .
Diğer güvenlik ima GET
ile ilgisi var GET
değişkenler talep eden URL'nin bir parçası olarak çoğu web sunucuları erişim günlüğüne oturum kapatılıyor. Duruma, düzenleyici iklime ve verilerin genel hassasiyetine bağlı olarak, bu potansiyel olarak endişeleri artırabilir.
Bazı istemciler / güvenlik duvarları / IDS sistemleri, GET
aşırı miktarda veri içeren isteklerde kaşlarını çatabilir ve bu nedenle güvenilir olmayan sonuçlar sağlayabilir.
POST
web sunucularına dosya yüklemek için kullanılan çok parçalı ikili giriş desteği gibi gelişmiş işlevleri destekler.
POST
bir istemcinin isteğinin yalnızca tek geçişli artımlı modda oluşturulmasını engellediği için, gönderilen verilerin boyutunun önceden bilinmesi gerektiğinden, uygulamaya özel bir istemci uygulamasının karmaşıklığını artırabilecek bir içerik uzunluğu üstbilgisi gerektirir. Belki de bir HTTP
RPC (Uzaktan Yordam Çağrısı) aktarımı olarak kullanmayı kötüye kullanmayı seçenler için küçük bir sorun .
Diğerleri semantik farklılıkları ve bu sorunun "ne zaman" bölümünü ele almakta zaten iyi bir iş çıkarmışlardır.
Ben bilgileri alınırken olduğumda GET kullanmak gelen Bilgiyi yolluyorum bir URL ve POST için bir URL.
Çok fazla veri veya bir çeşit hassas bilgi varsa POST kullanmalısınız (gerçekten hassas şeyler de güvenli bir bağlantıya ihtiyaç duyar).
Kullanıcıların sayfanıza yer işareti koyabilmesini istiyorsanız GET'i kullanın, çünkü tüm veriler yer işaretiyle birlikte verilir.
GET yöntemi ile REFRESH'e isabet eden kişilere dikkat edin, çünkü veriler kullanıcıyı her uyarmadan tekrar gönderilecektir (POST bazen kullanıcıyı yeniden gönderme konusunda uyarır).
Bu W3C belgesi HTTP GET ve POST kullanımını açıklamaktadır.
Bence bu yetkili bir kaynak.
Özet (belgenin 1.3 bölümü):
- Etkileşim daha çok bir soruya benziyorsa GET kullanın (örneğin, sorgu, okuma işlemi veya arama gibi güvenli bir işlemdir).
- Kullanım POST ise:
- Etkileşim daha çok bir emir gibidir veya
- Etkileşim, kaynağın durumunu kullanıcının algılayacağı şekilde değiştirir (örneğin, bir hizmete abonelik) veya
- Kullanıcı, etkileşimin sonuçlarından sorumlu tutulur.
Get ve Post yöntemlerinin kullandığınız sunucu teknolojisi ile ilgisi yoktur, php, asp.net veya ruby ile aynı şekilde çalışır. GET ve POST, HTTP protokolünün bir parçasıdır. Belirtildiği gibi, POST daha güvenlidir. POST formları da tarayıcı tarafından önbelleğe alınmaz. POST ayrıca büyük miktarlarda veri aktarmak için de kullanılır.
Verilerde değişiklik yaparken POST kullanmanın nedeni:
Ayrıca, adres çubuğunda, yer imlerinde ve sunucu günlüklerinde göründüğü için, sorgu bilgilerini dizeye hassas bilgiler (yalnızca GET seçeneğiyle) koymayın.
Umarım bu, insanların POST'un neden 'güvenli' olduğunu söylediğini açıklar. Hassas veriler aktarıyorsanız SSL kullanmanız gerekir.
GET
ve POST
HTTP yöntemlerini hangi edebilirsiniz benzer hedeflere ulaşmak
GET
temelde sadece veri almak (almak) içindir, A'nın GET
bir gövdesi olmamalıdır, bu yüzden çerezlerin yanı sıra, bilgi iletmek için tek yer URL'de ve URL'ler uzunluk sınırlıdır, gönderilen verilerin bir parçası olduğundan GET
daha az güvenlidir POST
URL
GET
Parola, kredi kartı veya diğer hassas bilgileri gönderirken asla kullanmayın !, Veriler URL'deki herkes tarafından görülebilir, Önbelleklenebilir veriler.
GET
düğmesini yeniden yüklerken veya geri çağırırken zararsızdır, kitap işaretlenir, parametreler tarayıcı geçmişinde kalır, yalnızca ASCII karakterlerine izin verilir.
POST
veri depolama veya güncelleme, ürün sipariş etme veya e-posta gönderme gibi herhangi bir şeyi içerebilir. POST
yöntem bir gövdeye sahiptir.
POST
yöntemi, hassas ve gizli bilgileri sunucuya aktarmak için güvence altına alınır, URL'deki sorgu parametrelerinde görünmez ve parametreler tarayıcı geçmişine kaydedilmez. Veri uzunluğu konusunda herhangi bir kısıtlama yoktur. Yeniden yüklerken, tarayıcı, verilerin yeniden gönderilmek üzere olduğu konusunda kullanıcıyı uyarmalıdır. POST
yöntem yer işareti eklenemez
Kaynakları URL'den almak istiyorsanız GET yöntemini kullanın. Tarayıcınızın geri düğmesine basarsanız her zaman son sayfayı görebilirsiniz ve yer imi eklenebilir, bu nedenle POST yöntemi kadar güvenli değildir.
URL'ye bir şey 'göndermek' istiyorsanız POST yöntemini kullanın. Örneğin, bir google hesabı oluşturmak istiyorsunuz ve tüm ayrıntılı bilgileri doldurmanız gerekebilir, ardından başarılı bir şekilde gönderdikten sonra 'gönder' düğmesine (POST yöntemi burada denir) basarsınız ve tarayıcınızın düğmesine basmaya çalışırsınız. , doldurulmuş form içeren son sayfa yerine hata veya yeni bir boş form alırsınız.
GET
yöntem:
Yalnızca 256 karakterlik tarih göndermek için kullanılır
Bu yöntemi kullanırken, bilgiler tarayıcıda görülebilir
Formlar tarafından kullanılan varsayılan yöntemdir
O kadar güvenli değil.
POST
yöntem:
Sınırsız veri göndermek için kullanılır.
Bu yöntemle bilgiler tarayıcıda görülemez
POST
Yöntemden açıkça bahsedebilirsiniz
Birden fazla sabitlenir GET
yöntemle
Daha gelişmiş özellikler sunar