Base64 güvenlik: kodlama neyi korur ve korumaz

Tersine çevrilebilir kodlamayı şifrelemeden, imzalardan ve doğrulamadan ayırın ve kodu çözülmüş belgeleri çalıştırmadan işleyin.

Base64 gizlilik sağlamaz. Kodlanmış değeri alan herkes, şifre veya anahtar olmadan baytlarını kurtarabilir. Kimlik bilgilerinin uzun bir dizede saklanması, kimlik bilgilerini kimin okuyabileceğinden ziyade görünümlerini değiştirir. Orijinallerle aynı işleme kurallarını kodlanmış gizli dizilere uygulayın.

Kodlama, şifreleme ve imzalar farklı sorulara yanıt verir

Kodlama, baytların metin odaklı bir sistemde nasıl seyahat edebileceğini sorar. Şifreleme, bir şifreleme anahtarı altında gizliliği korur. Doğrulama süreci ve anahtarların doğru olması koşuluyla, bir kimlik doğrulama etiketi veya dijital imza, verilerin yetkili bir tarafça üretildiğini ve değiştirilmediğini tespit edebilir. Düz bir sağlama toplamı esas olarak kazara meydana gelen bozulmaların tespit edilmesine yardımcı olur. Bu garantilerin hiçbiri yalnızca Base64'den kaynaklanmamaktadır.

Kodu çözülmüş bir JWT yararlı bir örnektir. Başlığı ve yükü okunabilir yapılardır ancak bunların okunması imzayı, vereni, hedef kitleyi veya son kullanma politikasını doğrulamaz. Doğrulanmamış bir talebi güvenilmeyen girdi olarak değerlendirin. İzleyicinin JSON biçimlendirmesinin yetkilendirme kararı olmasına izin vermeyin.

Kodu çözülmüş içeriği hareketsiz tutun

Bir veri, HTML, JavaScript, etkin içerik içeren bir SVG veya hatalı biçimlendirilmiş bir belgenin kodunu çözebilir. Metni şununla göster: textContent, değil innerHTML. Kodu çözülmüş kodu çalıştırmayın veya sayfanıza rastgele bir SVG eklemeyin. Bildirilen bir Veri URI MIME türü gönderen tarafından sağlanır ve yanlış olabilir. Dosya imzaları olası formatın belirlenmesine yardımcı olur ancak eşleşen başlık, dosyanın eksiksiz veya güvenli olduğunu göstermez.

// decodedText comes from an untrusted payload.
const output = document.createElement('pre');
output.textContent = decodedText;
document.body.append(output); // displays markup as text

Belleği ayırmadan önce sınırları ayarlayın

Kodlanmış metin verileri genişletir ve bir tarayıcı aynı anda giriş dizesini, kodu çözülmüş baytları ve önizlemeyi tutabilir. Kod çözmeden önce sınırları uygulayın, kabul edilen belge türlerini kısıtlayın ve kullanıcıların uzun işlemleri iptal etmesine izin verin. Yanlış biçimlendirilmiş giriş, sanki başarılı verilermiş gibi kopyalanabilen bir çıktı yerine ayrı bir hata durumu üretmelidir.

Hassas işler için aracın ağ davranışını ve saklama politikasını inceleyin. Tarayıcı işleme ve sunucu API işlemenin farklı sınırları vardır. Tarayıcı geçmişine, ekran görüntülerine veya günlüklere erişim sağlayabilecekleri sayfa URL'lerine belirteçler koymaktan kaçının. Test yaparken aynı yapıya sahip sentetik verileri kullanın. RFC 4648 kodlama belirsizliklerini tartışır; daha büyük bir protokolün güvenliği hala tam tasarımına bağlıdır.