URL'de hangi özel karakterlerin kullanımı güvenlidir?


14

URL'de hangi özel karakterlerin kullanımı güvenlidir?


3
Bir URL'de hangi özel karakterlerin güvenli olmadığını sormak çok daha hızlı ve daha kolay olurdu (Andreas Bonini'nin aşağıdaki cevabına göre).
Mark Hatton

2
Güvensiz olanı sormak cevaplamak zordur: Ascii olmayan karakterlerin yüzde olarak kodlanması gerekir.
neo

2
@neo: hayır değil: O
Thomas Bonini

Yanıtlar:


10

Güvenli karakterler, parametreler için kullanılan ayrılmış karakterlerin yanı sıra az, AZ, 0-9 ve _ - (alt çizgi ve eksi) şeklindedir.

Diğer karakterler bir dereceye kadar problem verecektir. örnek: bir parametre bir diziyse, ?param=array[content]yani bir url beyazını gösterecekse, köşeli parantez url'si kodlanmış, bu da çirkin ve dikte edilmesi imkansız görünüyor.

Ama sorun sadece çirkin değil, daha güvenli olanların yanında bir karakter ile bir jpg var diyelim, çoğu zaman tarayıcı 404 almak indiremez. Bu eski tarayıcılar ve bazı mobil tarayıcılar bir sorundur.

Bunu nasıl test edebilirim?

  • herkese açık bir sayfadaki adlarda test etmek istediğiniz karakterlerin bulunduğu bir sürü resim / js / css yerleştirin
  • 404 sayfasının her isabetinde size bir e-posta göndermesini sağlayın

Benim açımdan kanıtlayan 14000 e-posta içeren bir gelen kutum var.


5
"güvenli karakterler" yerine "son derece güvenli karakterler" diyebilirim - spesifikasyon daha fazlasına izin verir, ancak burada muhafazakâr olmanın daha iyi olduğunu kabul ediyorum.
Jeff Atwood

2
Dönemin nesi yanlış?
BlueWhale

12

Aşağıdaki karakterlerin URL'nizin yol bileşeninde özel bir anlamı vardır (yol bileşeni '?' Öncesi her şeydir):

  ";" | "/" | "?"

Bunlara ek olarak, aşağıdaki karakterlerin URL'nizin sorgu bölümünde özel bir anlamı vardır ('?' İşaretinden sonraki her şey). Bu nedenle, '?' onlardan kaçmanız gerekiyor:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Daha ayrıntılı bir açıklama için bkz. RFC .


3
Tabii ki, sadece netlik için, bu cevap sorunun tam tersidir. Soru, güvenli olmayan karakterleri değil, hangi karakterlerin güvenli olduğunu sorar. Orijinal soruya sağlam bir şekilde cevap vermek zor olduğundan, soru muhtemelen başka bir şekilde sormak ve bu cevabı eşleştirmek için düzenlenmelidir.
Mark Hatton

3

Buradaki cevaplar iyi, ama bence bahsetmeye değer bir istisna daha var - İngilizce olmayan karakterler. Bu SF sorusuna burada atıfta bulunarak, ñ (Español'de olduğu gibi) gibi karakterler, DNS'nizde doğru bir şekilde kodlanmışlarsa, tamamen meşrudur.

Modern tarayıcılarda (español için giriş ) çözülmelerini sağlamak için DNS'nizde Punycode kullanmanız gerekir, xn--espaol-zwaancak İngilizce olmayanların da yazması kolay olduğu için bunlar artık alan adlarında kullanmak için tamamen güvenlidir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.