Öne Çıkanlar
- Kodlama geri alınabilir ve bir güvenlik önlemi değildir — Base64, URL kodlama ve HTML entity veri biçimini değiştirir, gizliliğini değil.
- Hash tek yönlüdür; aynı girdi hep aynı çıktıyı üretir — bu yüzden şifre saklama, dosya bütünlüğü ve dijital imzalara uyar.
- Şifre saklamak için MD5 veya SHA-1 gibi hızlı hash asla kullanmayın: kasıtlı yavaş tasarlanan bcrypt, Argon2 veya scrypt kullanın.
Kodlama, Hash ve Şifreleme Farkı
Kodlama, veriyi anahtar olmadan geri çevrilebilen farklı bir biçime dönüştürür — Base64, URL kodlama ve HTML entity kodlama hep kodlama yöntemidir. Hash, herhangi bir girdiden sabit uzunlukta çıktı üretir ve geri alınamaz: hash'ten orijinali yeniden kuramazsınız. Şifreleme geri alınabilir ama anahtar gerektirir. Her biri belirli bir amaca hizmet eder: uyumluluk ve taşıma için kodlama, bütünlük ve şifre saklama için hash, sonradan erişilecek gizli veri için şifreleme.
Base64 Ne İçin Kullanılır?
Base64, ikili veriyi okunabilir ASCII karakterleri olarak kodlar; HTTP, JSON ve e-posta gibi metin tabanlı protokollerde güvenle taşınmasını sağlar. Yaygın kullanımları: HTML'e görsel gömme, API isteklerinde ikili veri kodlama ve HTTP Basic Authentication başlıklarında kimlik bilgisi iletme. Base64 şifreleme değildir — her araç anında çözer. Yalnızca ikili veriyi metin olarak temsil etmek için kullanın, hassas bilgiyi korumak için değil.
Güvenli Link ve Parametre İçin URL Kodlama
URL kodlama; boşluk, özel karakter ve ASCII dışı metin gibi URL'de güvenli olmayan karakterleri yüzde kodlu karşılıklarıyla değiştirir. Boşluk %20, ve işareti %26 olur. Sorgu parametresi değerlerini linke eklemeden önce her zaman URL kodlayın; özellikle değerler kullanıcı girdisinden geliyorsa — bozuk URL'leri ve yönlendirme parametrelerindeki injection risklerini önler.
Güvenli İçerik Çıktısı İçin HTML Entity
HTML entity kodlama; açılı parantez, ve işareti ve tırnak gibi HTML'de özel anlamı olan karakterleri entity karşılıklarına çevirir. Kullanıcının sağladığı içeriği bir HTML sayfasında gösterirken bu adım zorunludur; kodlanmamış çıktı, tarayıcının içeriği işaretleme olarak yorumlamasına ve script enjeksiyonuna izin verir. < karakterini < ve & karakterini & olarak kodlamak, kullanıcı içeriğinin HTML gibi işlenmesini önler.
Bütünlük Kontrolü ve Kimlik İçin Hash
Hash fonksiyonu her girdiden sabit uzunlukta bir parmak izi üretir. Aynı girdiler hep aynı hash'i verir; girdideki herhangi bir değişiklik çıktıyı tamamen değiştirir. MD5 ve SHA-1, çakışma direncinin kritik olmadığı dosya sağlama toplamları ve kısa kimlikler gibi güvenlik dışı işlere uygundur. Dijital imzalar, güvenlik bağlamındaki veri bütünlüğü ve kurcalamanın önemli olduğu her işte SHA-256 veya SHA-512 tercih edin.
bcrypt ile Şifre Hash'leme
Veritabanında saklanan şifreleri MD5, SHA-1 veya SHA-256 ile hash'lemeyin. Bu algoritmalar hızlı olacak şekilde tasarlanmıştır ve hızlı hash'ler sıradan donanımda saniyede milyarlarca kombinasyonla denenebilir. bcrypt, Argon2 ve scrypt yavaş olacak ve donanım hızlanmasına direnecek şekilde tasarlanmıştır. bcrypt'teki maliyet faktörü hash süresini kontrol eder — artırmak, donanım geliştikçe kaba kuvvet saldırılarını giderek yavaşlatır.
İlgili Fixvix Akışı
API testleri için, bir kimlik bilgisinin veya ikili verinin kodlanınca nasıl göründüğünü Base64 kodlayıcıyla önizleyin. Güvenli link kurmak için, kullanıcı girdisi değerleri sorgu dizesine eklemeden önce URL kodlayıcıdan geçirin. Şifre saklama kararlarında, hash kütüphanesi seçmeden önce çıktı formatını ve maliyet faktörünü görmek için bcrypt üreticisini kullanın.