URL Kodlama: Kapsamlı Rehber
URL kodlama (yüzde kodlama olarak da bilinir), verilerin URL'lerde güvenli bir şekilde iletilmesini sağlayan temel bir web teknolojisidir. Sorgu parametrelerini işlemek, URL'ler oluşturmak veya web API'leri ile çalışmak için URL kodlamanın ne zaman ve nasıl kullanılacağını anlamak çok önemlidir.
URL Kodlama Nedir?
URL kodlama, URL'lerde özel anlamı olan karakterleri güvenli temsillerle değiştirme işlemidir. URL'ler yalnızca ASCII karakter setinden sınırlı bir alt kümeyi içerebilir. Diğer karakterler (boşluklar, Türkçe karakterler, semboller) veya URL sözdiziminde özel anlamı olan karakterler (&, =, ?, #, /) kodlanmalıdır. Kodlama, yüzde işaretini (%) ve ardından karakterin ASCII değerinin iki onaltılık basamağını kullanır. Örneğin, bir boşluk %20, bir ve işareti (&) %26 olur. Bu, herhangi bir karakterin URL'de güvenli bir şekilde temsil edilebilmesini sağlar. URL kodlama neden gereklidir? URL'ler yalnızca belirli bir karakter kümesini destekler: harfler (A-Z, a-z), rakamlar (0-9) ve birkaç özel karakter (-, _, ., ~). Diğer her şey kodlanmalıdır. Ek olarak, bazı karakterlerin URL'lerde özel anlamı vardır: ? sorgu dizesini başlatır, & parametreleri ayırır, = anahtar-değer çiftlerini bağlar, # bir parçayı tanımlar, / yol segmentlerini ayırır. Bu karakterleri veri olarak kullanmak istiyorsanız (gerçek anlamlarıyla değil), onları kodlamanız gerekir. Modern web geliştirmede, kullanıcı verilerini sorgu parametrelerinde ilettiniz mi: /search?q=kahve+fiyatları. Arama sorgusu Türkçe karakterler, boşluklar veya semboller içeriyorsa, düzgün kodlanmalıdır. API isteklerinde parametreler gönderiyorsanız, değerlerin doğru bir şekilde kodlanması gerekir. Form verileri (application/x-www-form-urlencoded) gönderirken, içerik URL kodlanır. Dinamik URL'ler oluştururken, kullanıcı girdilerini URL'lere gömüyorsanız, bunları her zaman güvenlik ve doğruluk için kodlayın. URL kodlama Base64 veya şifreleme değildir—URL'ler için karakter güvenliğidir. Herkes anında çözebilir. Hassas verileri gizlemek için kullanmayın. Düzgün URL formatını sağlamak içindir.
Hangi Karakterler Kodlanmalı
Tüm karakterlerin kodlanmasına gerek yoktur, ancak birçoğu kodlanmalıdır. Kodlanmaması gereken karakterleri (güvenli) ve kodlanması gereken karakterleri (güvensiz) anlamak, uygun URL oluşturmak için çok önemlidir. Ayrılmış karakterler, URL'lerde özel sözdizimsel anlamı olan karakterlerdir. Bunları gerçek anlamlarıyla kullanıyorsanız, kodlamayın. Ancak bunları veri olarak kullanıyorsanız, kodlamanız gerekir. Ayrılmış karakterler şunlardır: : (iki nokta), / (eğik çizgi), ? (soru işareti), # (hash), [ ] (köşeli parantezler), @ (at işareti), ! (ünlem), $ (dolar), & (ve işareti), ' (tek tırnak), ( ) (parantezler), * (yıldız), + (artı), , (virgül), ; (noktalı virgül), = (eşittir). Güvenli karakterler asla kodlanmaya ihtiyaç duymaz: A-Z, a-z (harfler), 0-9 (rakamlar), - (tire), _ (alt çizgi), . (nokta), ~ (tilda). Boşluklar özeldir: Ya %20 olarak kodlanır ya da + olarak (sadece sorgu dizelerinde). %20 her yerde çalışır ve daha güvenlidir. + sadece sorgu parametrelerinde geçerlidir. ASCII olmayan karakterler (Türkçe karakterler: ç, ğ, ı, ö, ş, ü) her zaman kodlanmalıdır. Modern tarayıcılar UTF-8 kodlamasını kullanır, bu yüzden ç %C3%A7 olur. Kontrol karakterleri (ASCII 0-31) ve yüksek ASCII karakterleri (128-255) her zaman kodlanmalıdır. Pratik kural: URL'nin yol veya sorgu parametrelerinin veri kısmında herhangi bir şüpheli karakter varsa, kodlayın. Aşırı kodlama zararsızdır—zaten güvenli karakterleri kodlamak URL'yi daha uzun yapar ancak hala çalışır. Eksik kodlama ise kırık URL'lere ve hatalara yol açar. Modern programlama dillerinin yerleşik fonksiyonları vardır: JavaScript'te encodeURIComponent(), Python'da urllib.parse.quote(), PHP'de urlencode(). Bu fonksiyonları kullanın—URL kodlamayı manuel olarak uygulamayı denemeyin.
URL Kodlama En İyi Uygulamaları
Uygun URL kodlama, hem güvenlik hem de işlevsellik için çok önemlidir. Bu en iyi uygulamaları takip etmek, API'lerinizin ve web uygulamalarınızın doğru çalışmasını sağlar. Kullanıcı girdilerini her zaman kodlayın. Kullanıcılar beklenmedik karakterler girebilir: Türkçe karakterler, emoji'ler, semboller. Bunları asla URL'lere doğrudan yerleştirmeyin. Her zaman kodlayın. Bu, güvenlik (enjeksiyon saldırılarını önler) ve doğruluk (kırık URL'leri önler) içindir. Doğru fonksiyonu kullanın. JavaScript'te: URL'nin farklı kısımları için farklı fonksiyonlar vardır. encodeURIComponent() parametreler ve değerler için kullanılır—ayrılmış karakterleri kodlar. encodeURI() tam URL'ler için kullanılır—URL sözdizimini korur (/, :, ? kodlamaz). Çoğu durumda, parametreler için encodeURIComponent() istiyorsunuz. URL'yi parça parça oluşturun. Tüm URL'yi kodlamayın. URL'yi segment segment oluşturun, her bir veri parçasını kodlayın. Örnek: const url = 'https://api.example.com/search?q=' + encodeURIComponent(query) + '&lang=' + encodeURIComponent(lang). Bu, URL yapısını korur ve yalnızca verileri kodlar. Form verileri için, çoğu HTTP kütüphanesi (fetch, axios, requests) otomatik olarak application/x-www-form-urlencoded verilerini kodlar. Manuel olarak kodlamayın—kütüphaneye izin verin. URL'leri manuel olarak oluşturuyorsanız (sorgu dizeleri için), kendiniz kodlayın. + ile %20 arasında tutarlı olun. Her ikisi de sorgu dizelerinde boşlukları temsil eder, ancak %20 her yerde çalışır. %20 ile kalın—tutarlılık için daha güvenlidir. Bazı sunucular + karakterini farklı şekilde işler. İki kez kodlamadan kaçının. Bir değer zaten kodlanmışsa, tekrar kodlamayın. "hello world" → "%20hello%20world" → "%2520hello%2520world". İkincisi yanlış. Verilerin kodlanmış olup olmadığını bilin. Çözme için, yerleşik fonksiyonlar kullanın: decodeURIComponent() JavaScript'te, urllib.parse.unquote() Python'da. Sunucu tarafında, çoğu framework otomatik olarak parametreleri çözer—manuel olarak yapmanıza gerek yok. API belgelerini kontrol edin. Bazı API'ler belirli kodlama gereksinimleri veya tuhaflıkları olabilir. OAuth imzaları gibi bazıları çift kodlama gerektirir. Belgelerini okuyun. Son olarak, test edin. Özel karakterler, Türkçe karakterler, semboller içeren URL'leri test edin. URL'lerinizin farklı tarayıcılarda ve platformlarda çalıştığından emin olun. Otomatik testler, kenar durumlarını yakalar.
Aracı Dene
URL Kodlayıcı/Çözücü
Daha Fazla Bilgi
SSS
URL Kodlayıcı/Çözücü
SSS →