Web geliştirme · Yula Studios rehberi

URL encoding nedir? Sorgu parametresi ve path farkı

URL encoding çoğunlukla percent-encoding işlemidir. Hangi URL bileşenini kodladığınız önemlidir; tüm adresi tek seferde kodlamak genellikle hatadır.

Yula Studios · İçerik tarihi: 2026-10-02

Bileşenleri ayırın

URL şema, host, path, sorgu ve parça gibi bölümlerden oluşur. Sorgu değerindeki boşluğu kodlamak path içindeki ayıracı kodlamaktan farklıdır.

JavaScript encodeURIComponent tek bileşeni; encodeURI URL yapısındaki bazı ayırıcıları korur. Tüm adresi bileşen gibi kodlamayın.

Boşluk, artı ve yüzde

Form kodlamada boşluk +, genel URL örneklerinde %20 olabilir. Hedef bağlamı doğrulayın.

Mevcut % işaretini tekrar kodlamak %25 üretir. Zaten kodlanmış değeri yeniden encode etmek double-encoding hatası yaratabilir.

Kodlama doğrulama değildir

Percent-encoding veri gösterimidir; şifreleme veya erişim kontrolü sağlamaz. Sorguda token ya da kişisel bilgi bulunabilir ve loglara yazılabilir.

Parser bileşenleri görünür kılar; yönlendirme veya sunucu isteğinde izin verilen hedefleri ayrıca doğrulayın.

Hata ayıklama

Şemayı, hostu, path’i ve query değerlerini ayrı inceleyin. İmzalı URL’de parametre sırası sonucu etkileyebilir.

Tek parametreyi encode ettikten sonra tüm adresi yeniden kodlamayın.

URL parçalarının farklı kuralları

Bir URL şema, yetki alanı, yol, sorgu ve parça gibi bölümlere ayrılır. Her bölümde bazı ayırıcı karakterlerin yapısal anlamı bulunur. Bir metin parçasındaki eğik çizgi yol segmentlerini ayırabilir; sorgudaki eşittir anahtar ile değeri ayırır. Bu yüzden tüm adresi tek bileşenmiş gibi kodlamak adresin yapısını bozabilir. JavaScript `encodeURIComponent` tek değer veya bileşen için; `encodeURI` ise URL yapısındaki bazı ayırıcıları koruyarak daha bütün adres için tasarlanmıştır. Hangi fonksiyonun uygun olduğu değerinizin nereye yerleşeceğine bağlıdır. Önce URL’yi bileşenlerine ayırın, sonra yalnız eklediğiniz veriyi bağlama uygun biçimde kodlayın.

Yüzde işareti, UTF-8 ve tekrar kodlama

Percent-encoding, bir baytı yüzde işaretinden sonra iki onaltılık basamakla gösterir. Türkçe karakterler gibi ASCII dışı metinler çoğunlukla önce UTF-8 baytlarına çevrilir, ardından her bayt kodlanır. Bir değer zaten `%20` biçiminde kodlanmışken tekrar kodlanırsa yüzde işareti `%25` olarak temsil edilip `%2520` ortaya çıkabilir; bu double encoding sorunudur. Tersine, her görülen `%` dizisini körlemesine decode etmek geçersiz veya beklenmeyen girdiye yol açabilir. Veri akışında hangi katmanın kodlama yaptığını belirleyin, test girdisini kaydedin ve decode işlemini yalnız doğru aşamada uygulayın. Çok kez encode/decode çağırmak sorunu gizlemek yerine kök nedeni bulmayı zorlaştırır.

Sorgu parametreleri ve form kodlaması

HTML form verilerinde kullanılan `application/x-www-form-urlencoded` biçiminde boşluklar artı işaretiyle temsil edilebilir; genel URL bileşeninde boşluğu `%20` olarak görebilirsiniz. Artı işaretini gerçek artı olarak taşımak gerekiyorsa bağlamdaki kodlayıcı ve çözücünün davranışını kontrol edin. Parametreleri el ile birleştirmek yerine URL ve URLSearchParams gibi yapılandırılmış API’ler kullanmak ayırıcıların yanlış kaçışını azaltır. İmzalı URL veya belirli API protokolünde parametre sırası ve normalizasyon kuralları imza doğrulamasını etkileyebilir. Bir URL parser bileşenleri gösterir, fakat yönlendirme hedefinin izinli olduğunu veya sunucu tarafında güvenli işlendiğini kanıtlamaz. Hedef allowlist ve doğrulama uygulamanızda ayrıca bulunmalıdır.

Gizlilik ve hata ayıklama

URL sorguları tarayıcı geçmişine, sunucu ve proxy loglarına, analiz kayıtlarına veya referrer başlıklarına girebilir. Kodlama gizleme veya şifreleme değildir; token, parola ya da kişisel bilgiyi URL içine koymak ek risk taşır. Sorgu değeri gerekiyorsa kısa ömürlü ve yetki kapsamı sınırlı tasarım kullanın, erişimi sunucu tarafında kontrol edin ve log politikasını değerlendirin. Hata ayıklarken şema, alan adı, yol ve her sorgu değerini ayrı inceleyin. Bir adresi paylaşmadan önce gizli parametreleri çıkarın. URL Encoder karakter gösterimini dönüştürür; kimlik doğrulama, güvenli yönlendirme veya giriş denetimi sağlamaz. Bu sorumluluklar uygulama ve sunucu katmanında karşılanmalıdır.

Örnek iş akışı: sorgu parametresi eklemek

Bir uygulama arama metnini `q` parametresinde taşıyacaksa tüm adresi kodlamak yerine yalnızca parametre değerini URL API’siyle eklesin. Değerde Türkçe karakter, boşluk veya ampersand varsa yapılandırılmış API bu karakterlerin sorgu ayırıcılarıyla karışmasını önler. Sunucu aynı parametreyi tek katmanda çözer ve beklenen karakter kodlamasını kullanır. Kullanıcı girdisini URL’de taşımak gerektiğinde parola veya erişim tokenı gibi sırları sorguya koymayın; URL geçmiş, log veya referrer içinde kalabilir. Bir kez kodlanmış değeri tekrar kodlamanın `%25` üretebileceğini test edin. İmzalı bağlantı kullanılıyorsa imza algoritmasının parametre sırası ve normalizasyon gereksinimini izleyin. URL parser hata ayıklamaya yardım eder ama yönlendirme güvenliğini tek başına sağlamaz. Redirect endpoint’lerinde kullanıcının gönderdiği tam adresi otomatik açmayın; izin verilen hedef alan adlarını ayrıca denetleyin. Güvenli kodlama yanlış hedefi güvenli yapmaz, bu yüzden yönlendirme, autentikasyon ve parametre doğrulama ayrı testlerden geçmelidir.

Sık sorulan sorular

Boşluk + mı %20 mi?

Bağlama göre değişir; form-urlencoded ve genel URL bağlamları farklı olabilir.

Tüm URL’yi encodeURIComponent ile kodlayabilir miyim?

Genellikle hayır; ayırıcılar kodlanır ve URL yapısı bozulabilir.

URL encoding veriyi gizler mi?

Hayır. Geri çevrilebilir gösterim biçimidir.