Kısa cevap: iso-8859-1, kodlanmış kelimeler RFC2047 (MIME) ile uyumlu olarak kullanılmadığı sürece.
Daha uzun açıklama:
RFC2617, bölüm 2 (HTTP Kimlik Doğrulaması) temel kimlik bilgilerini tanımlar :
basic-credentials = base64-user-pass
base64-user-pass = <base64 encoding of user-pass,
except not limited to 76 char/line>
user-pass = userid ":" password
userid = *<TEXT excluding ":">
password = *TEXT
Spesifikasyon, BNF'deki tanımlar için RFC2616'ya (HTTP 1.1) başvurulmadan okunmamalıdır (yukarıdaki gibi):
Bu belirtim, HTTP / 1.1 belirtimi 2 için bir tamamlayıcıdır . Bu belgenin artırılmış BNF bölümü 2.1'i kullanır ve hem o belgede tanımlanan uçbirim olmayanlara hem de HTTP / 1.1 belirtiminin diğer yönlerine dayanır.
RFC2616, bölüm 2.1 tanımlar METİN (vurgu benim):
METİN kuralı yalnızca açıklayıcı alan içerikleri ve mesaj ayrıştırıcısı tarafından yorumlanması amaçlanmayan değerler için kullanılır. * METİN kelimeleri, yalnızca RFC 2047 kurallarına göre kodlandığında , ISO-8859-1 dışındaki karakter kümelerinden karakterler içerebilir
.
TEXT = <any OCTET except CTLs, but including LWS>
Dolayısıyla, RFC2047 (MIME pt. 3) kurallarına göre başka bir kodlama tespit etmediğiniz sürece kesinlikle iso- 8859-1'dir :
// Username: Mike
// Password T€ST
Mike:=?iso-8859-15?q?T€ST?=
Bu durumda kelimedeki euro işareti iso-8859-15'e0xA4
göre kodlanacaktır . Anladığım kadarıyla, bu kodlanmış kelime sınırlayıcıları kontrol etmeniz ve ardından belirtilen kodlamaya göre içindeki kelimelerin kodunu çözmeniz gerekir. Bunu yapmazsanız, parolanın olduğunu düşüneceksiniz =?iso-8859-15?q?T¤ST?=
( iso-8859-1 olarak yorumlandığında 0xA4
kodunun çözüleceğine dikkat edin ¤
).
Anladığım kadarıyla bu RFC'lerden daha açık onay bulamıyorum. Ve bazıları çelişkili görünüyor. Örneğin, RFC2047'nin (MIME, pt. 3) belirtilen 4 hedefinden biri aşağıdakileri yeniden tanımlamaktır:
US-ASCII dışındaki karakter kümelerinde ... metin başlık bilgilerine izin verecek mesajların biçimi.
Ancak RFC2616 (HTTP 1.1), varsayılan olarak iso-8859-1 olan TEXT kuralını kullanarak bir başlık tanımlar. Bu, bu başlıktaki her kelimenin şifreli bir kelime (yani =?...?=
form) olması gerektiği anlamına mı geliyor ?
Ayrıca geçerli olan hiçbir tarayıcı bunu yapmaz. Utf-8 (Chrome, Opera), iso-8859-1 (Safari), sistem kodu sayfası (IE) veya başka bir şey kullanıyorlar (Firefox durumunda sadece utf-8'deki en önemli bit gibi).
Düzenleme: Bu cevabın konuya daha çok sunucu tarafı perspektifinden baktığını yeni fark ettim.