2011-05-09 26 views
14

Dinamik bir geri bağlantı oluşturmak için $ _SERVER ['HTTP_REFERER'] kullanıyorum.

<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a> 

bunu yapmak için oldukça güvenli mi?

+3

Güvenli? –

+0

REFERER her zaman mevcut değildir, bu nedenle yönteminiz bazı durumlarda çalışmaz. –

cevap

14

Öyle değil.

Mevcut olmayabilir. (Bu yanlış olabilir, bazı kişisel güvenlik duvarı paketleri, gizlilik nedenleriyle başvuru sahibini gizler ve bu arada HTTP özelliklerini ihlal eder)

XSS saldırılarına karşı korunmak için sisteminizin dışından gelen her şeyi htmlspecialchars aracılığıyla çalıştırmalısınız (yine de IIRC, URL güvenli olması gerektiğinden, refakatçinin hiçbir zaman tehlikeli karakterleri olmamalıdır, her zaman temkinli davranma alışkanlığınızı korumalısınız).

Tarayıcılar yüzden, kullanıcı bir bağlantı "geri" onların geçmişinde geri almaz işaretli tıklarsa, bununla, özellikle (işlevselliklerini çoğaltmak denemek için gerek yoktur, olsa geri düğmeleri ile gelen normal geri düğmesine tıklamak kavramsal olarak onları ileriye götürecektir).

+1

Sadece boş değil, hiçbir şekilde ayarlanmamış olabilir. –

+0

İyi nokta, daha açık olacak şekilde düzenlenmiştir. – Quentin

5

Bu güvenli olabilir, ancak olan güvenilir değildir: HTTP spec için, HTTP_REFERER isteğe bağlıdır nedeniyle (bazı istemciler tüm bu başlık göndermek ve olmayan herhangi bir HTTP isteği bir miktar "güvenlik" yazılım şeritler bunu) ve bu üstbilgiyi değiştirmenin birçok yolu vardır. Bazı tarayıcılar yönlendirme sayfası gönderir, bazıları boş bir dize gönderir, bazıları bunu hiç göndermez, bazıları sahte veriler gönderebilir, bazıları Matilda Teyze gönderebilir; ve dahası, bu başlıkta geçerli veri alıp almadığınızı anlatamazsınız.

Yani, hayır, ben HTTP_REFERER önceki sayfa içerdiğini güven asla ve ne yapmanız gerekir.

+1

+1 Birkaç kez, genellikle 'favicon.ico' veya css dosyası olarak yönlendirici olarak ayarlanan son HTML istenen sayfada başvurulan ilk dosyaya sahibim. Bu Firefox ve Chrome'da oldu. –

2

O değil. Ayarlanamaz, istenmeyen veya güvensiz olabilir. Aşağıdaki Consider

: En url ve isabetlerde

  1. Kullanıcı türleri gidin. Bir yönlendirici olmayacak. Sadece arka planınız çalışmaz, bir uyarı da alırsınız.
  2. Ziyaretçi, ürün sayfanızda harici bir kaynaktan (google diyelim) geliyor. ziyaretçinizi google'a geri göndermek istiyor musunuz? Ben öyle düşünmüyorum.
  3. başlık değiştirilebilir
  4. , ben de çifte kontrol edilmesi, ya da hiç kullanmadığınız için gider. XSS saldırılarına karşı korumalı olduğu gibi ya olduğu gibi güvenli "her zaman geçerli bir değer içerecektir"
İlgili konular