2012-09-30 18 views
8

Uygulama kullanıcılarım, dosyalarını bir kovaya yüklüyor. S3 grubumdaki her nesnenin nesnelerin üzerine yazılmasını önlemek için benzersiz bir tuşa sahip olduğundan nasıl emin olabilirim? Şu andaAmazon S3 her nesne için benzersiz anahtarlar yaratıyor

Ben S3 dosyayı göndermeden önce benim php script rasgele dize ile dosya şifreleme ediyorum. Tartışma ortamı yaratmak için

yükleyicisi yükleme üzerine dosya adını işlemek için bir yol bulur varsayalım. Sitemdeki tüm görüntüleri, bir banana resmi ile değiştirmek istiyor. Şifreleme başarısız olursa S3'te dosyaların üzerine yazılmasını önlemek için iyi bir yol nedir?

Düzenleme: benim kova görüntüleri görüntülerken ben bir görüntü URL'de bir sürüm kimliğini belirtmesi olamaz çünkü çalışacak sürüm sanmıyorum.

cevap

3

Şifreleme mi yapıyorsunuz yoksa hashing mi? Eğer md5 veya sha1 hashlarını kullanıyorsanız, bir saldırgan karma bir çarpışmayı kolayca bulabilir ve bir muz cildinde kayma yapabilir. Rastgele bir başlatma vektörü olmadan şifreleme yapıyorsanız, bir saldırgan birkaç yüz dosya yükledikten sonra anahtarınızı çıkartabilir ve şifreleme muhtemelen en iyi yaklaşım değildir. Bu, hesaplama açısından pahalıdır, uygulanması zordur ve bu iş için daha az çaba ile daha güvenli bir mekanizma elde edebilirsiniz.

Eğer herhangi bir sorun olmamalıdır entropi makul güvenilir kaynağı kullanarak, her dosya adına rasgele dize getirebilirsiniz ise, ancak dosya zaten zaten var olup olmadığını kontrol etmelidir. Kontrol etmek için bir döngüyü kodlamak, S3::GetObject'u kullanmak ve yeni rastgele bir dizi oluşturmak neredeyse hiç koşmayacak bir şey için çok fazla çaba gösterse de, "hemen hemen hiç", sonuçta ortaya çıkma olasılığının yüksek olduğu anlamına gelir.

+0

Yanıt verdiğiniz için teşekkür ederiz! Rastgele bir dizgeye şifreliyorum. Dosya zaten mevcut olup olmadığını kontrol etmeyi, bir ekstra S3 talebi yapsam bile en iyi çözüm olduğunu düşünüyorum. Veya tüm dosya bilgilerini bir veritabanında depolarsam, db tablosunu mysql ile kontrol edebilirim. – CyberJunkie

+1

Yukarıda belirttiğim gibi, dosya adını şifrelemek en etkili çözüm değildir. İsmi rastgele bir dizeyle değiştirebilir ve eşlemeleri veritabanınızda saklayabilirsiniz. Openssl_random_pseudo_bytes() 'a bakın. –

+2

@TerenceJohnson, "neredeyse hiç", sadece daha rasgele bitler ekleyerek "keyfi olarak" olabilir. S3'e ekstra bir yolculuk yapmak, hizmet saatinize zarar verecektir. – Fantius

0

Yüklemeden önce bu ada sahip bir dosyayı kontrol etmek işe yarayacaktır.

Dosya zaten varsa, dosya adını yeniden rasgele hale getirin ve yeniden deneyin.

+11

Verilerinizi kontrol ettikten ve vermeden önce bu ada sahip bir dosya oluşturulabilir. Yani, iki işlem bir işlemde değil. – ivant