Güvenli Bir Biçimde PHP Yönlendirme Nasıl Yapılır?

PHP yönlendirme kullanışlıdır ancak doğru bir biçimde yapılmazsa tehlikeli olabilir.

header() fonksiyonu bir kullanıcıyı kolaylıkla başka bir sayfa yönlendirmek için kullanılabilir. Ancak pratikte bu fonksiyonu kullanmak göründüğü kadar da basit değildir. Bu rehberde size daha sonra sorun çıkarmayacak bir PHP sayfa yönlendirme nasıl yapılır göstereceğiz.

PHP Yönlendirmesi için En Basit Yöntem

Çoğu rehberde sayfanızın en üst kısmındaki header() fonksiyonunu kullanarak bir PHP yönlendirme yapabileceğiniz söylenir. Bunu yapmak için fonksiyonu tıpkı aşağıdaki örnekteki gibi yeni bir URL göndermek için bu PHP yönlendirme kodu kullanılabilir:

header('Location: '.$newURL.php);

Bu header fonksiyonu kullanıcıların tarayıcılarına herhangi bir HTML veya metin iletilmeden önce yani sayfanın en üstünde konumlanmalıdır. Yani <!DOCTYPE> bildiriminden, herhangi bir Java’dan ve de bir PHP kodundan önce gelmelidir. Böylelikle bu fonksiyon kullanıcıları yeni URL’ye yollayacaktır.

Basit gözükse de konu header() fonksiyonuna gelince kodun sadeliği geliştiricileri güvenlik konusunda yanıltabilir. Hadi bu fonksiyonu nasıl doğru bir biçimde kullanacağınızı görelim.

Die() and Exit ()

İlk olarak die() veya exit() komutlarını her yönlendirme yaptığınızda kullanmalısınız. Özetle, sorun şu ki tarayıcılar ve botlar header’ları görmezden gelebilir ve bu şekilde de yönlendirdiğiniz sayfa onlara erişilebilir hale gelir. Bir başka deyişle belirli birr sayfayı kullanmak için header yönlendirmesini kullanmış olursunuz ancak boşa gitmiş olur.

Bu yüzden eğer yönlendirmeniz görmezden gelinirse onu kapatmanız gerekir. Bunu yapmanın yoluysa yönlendirmenizden sonra die() veya exit() komutlarından birini kullanmaktır:

header("Location: .$newURL.php");
die();

Relative (Göreceli) ve Absolute (Mutlak) URL’ler

Şimdiyse yönlendirmelerde relative (göreceli) ve absolute (mutlak) URL’lerden bahsetmenin vakti. RFC 7231 ikisini de kullanmanıza izin verir ancak relative (göreceli) yönlendirmeler kullanırken fazlasıyla dikkatli olmalısınız. Bunun sebebiyse bazı site kurma araçlarının PHP sayfalarının sırayla adları değiştirmesidir. Yani kısaca eğer PHP’niz üzerinde bir web site kurma aracı aracılığıyla çalışıyorsanız bütün yönlendirmelerinizi bozabilirsiniz.

Ne yazık ki şu anda bu sorunun bir çözümü yoktur. Ancak yapabileceğiniz şey ise yönlendirmelerinizin nereye yönlendirdiğinden daima haberdar olmaktır.

Durum Kodları

Standart PHP yönlendirmelerin üçüncü sorunuysa PHP’nin “konum” operatörünün HTTP 302 kodunu veriyor olmasıdır. Bunu yapmasına izin vermemelisiniz çünkü birçok web tasarıyıcısı bu kodu olması gerektiğinin tam tersi bir biçimde kullanmaktadır. “Gerçek” bir yönlendirme yapmak yerine GET komutunu kullanırlar.

PHP yönlendirme yaparken yapabileceğiniz en iyi şeylerden biri verilecek kodu belirtmektir. Maalesef ki hangi kodu kullanacağınız bir çekişme konusudur. HTTP 301 kalıcı bir yönlendirme belirtir ve ana sayfanızı geri almakta sorun yaşatabilir. HTTP 303 ise birçok tarayıcı tarafından “diğer” olarak algılanır ve sayfanızı arama motorları üzerinden index’lerken sorunlara yol açabilir.

Özetle, bu durum çözülene kadar HTTP 303’ü kullanmalısınız.

Kılavuza Bakın

Yukarıdaki temel önlemleri almadan önce PHP yönlendirme yapmaya ve yayınlamaya başlamadan kılavuzu okumalısınız. Ne yaptığınızı anladığınızdan emin olmak için PHP kılavuzuna göz atmalı ve en iyi yöntemler içinse W3C dökümanını incelemelisiniz.

Bu belgeleri okuma aşamasındayken de web sitenizi olağan zayıflıklara karşı koruduğunuzdan emin olun. Eğer halihazırda PHP yönlendirmeleri kullanmanızı gerektiren bir durumdaysanız sitenizin güvenliğini gözden geçirmeniz yararınıza olacaktır.

Privacy Canada ağ zayıflıkları listesi

Diğer Yöntemler

Bütün bu sorunlara rağmen “neden PHP yönlendirme yapayım?” diye düşünüyor olabilirsiniz. Bu oldukça iyi bir soru! PHP yönlendirme genellikle diğer yönlendirmelerden daha hızlı yapıldığından dolayı web sitesi hızını iyileştirme konusunda iyi bir araç olsa da başka seçenekler de mevcuttur.

Yönlendirme için iki farklı yöntem bulunmaktadır. Sayfanızın HTML kısmındaki <meta> elementini veya JavaScript’i kullanabilirsiniz. İlk yöntemdeki <meta> elementini kullanmanın bir örneği:

<meta http-equiv="refresh" content="0;url=yenisayfa.php">

İkinci yöntemde JavaScript’i kullanmak biraz daha zarif ve daha profesyonel olacaktır:

window.location.replace("http://yenisayfa.php/");

Bu iki yöntem de header() yönlendirmesinden daha yavaştır ancak muhtemelen daha esnek olacaktır.

Sonuç

Yukarıdaki adımları takip etmeniz güvenli bir biçimde PHP yönlendirme yapacağınız anlamına gelse de eğer birçok PHP yönlendirmesi yapmanız gereken bir durumdaysanız sitenizin yapısını gözden geçirmeniz gerekir.

Bunu yapmanın için birkaç iyi sebebi bulunmaktadır. İlki bütün web host’ların eşit olmadığıdır. Eğer bütün ziyaretçilerinizi sitenizde dolaylı bir şekilde gezmelerini sağlıyorsanız web sitenizin performansı etkilenecektir. Bunu ucuz bir web hosting sağlayıcısı kullanarak iyileştirebilirsiniz ancak bu da belirli bir dereceye kadar olacaktır.

İkinci sebep ise yönlendirmeyi yaptığınız ana sayfa siz farkında olmadan özellikle de sitenizin performansını takip etmek için web analitik yazılımları kullanıyorsanız ziyaretçilerinizin verilerini topluyor olabilir. Veri kanunlarının fazlasıyla önemli olduğu günümüzde bunun ciddi yaptırımları olabilir.

Özet olarak PHP yönlendirme konusunda dikkatli olun, onları düzgün ve yalnızca ihtiyacınız olduğu zaman kullanın.

Author
Yazar

Gökhan O.

Gökhan Hostinger’da YouTube Takım Lideri olarak çalışmakta. WordPress hakkındaki tecrübe ve bilgisini bu blogda paylaşıyor. Hostinger’ın adını YouTube içeriği üzerinden duyurmayı kendine görev edinmiştir. Hobileri arasında oyun oynamak ve futbol maçları izlemek vardır.