Tôi có một ứng dụng web cho phép người dùng tải lên hình ảnh. Tôi lưu trữ các hình ảnh trong một thùng S3 và cung cấp cho họ tất cả các tên tập tin về cơ bản là kết quả của MD5 (session_id + unix_timestamp). Có bất kỳ cạm bẫy nào của phương pháp này để tạo tên tệp ảnh duy nhất không?Tạo tên tệp (băm) duy nhất cho hình ảnh do người dùng tải lên
Trả lời
Tôi sẽ xem xét lưu trữ các tệp có định dạng thư mục nào đó, vì nhiều ứng dụng khách dựa trên giao diện người dùng S3 sẽ hoạt động tốt hơn nếu không có 200.000 tệp trong một thư mục. Ngoài ra nó sẽ không làm tổn thương cũng thêm phần mở rộng chính xác và loại mime vào các tập tin được tải lên. Bằng cách đó - nếu bạn quyết định phục vụ chúng trực tiếp từ S3 đến một trang web, v.v. - chúng sẽ sẵn sàng để đi.
2012/2/6gtbb88uytgfrses4.png
Ngoài ra bạn có thể đặt kích thước trong tên ...
2012/2/6gtbb88uytgfrses4_600x800_.png
Từ quan điểm độc đáo, bạn nên an toàn. Va chạm là không có khả năng (mặc dù có thể) xảy ra khi sử dụng MD5.
Nhưng, nếu bạn muốn cung cấp cho người dùng tải xuống tệp này, tôi cho rằng bạn đang lưu trữ tên tệp ban đầu ở nơi khác (cơ sở dữ liệu hoặc tương tự). Có đúng không? Nếu đúng, bạn cũng có thể lưu trữ ID phiên và dấu thời gian trên cùng một địa điểm và chỉ cần tiếp tục với GUID cho tên tệp (thay vì cung cấp cho hàm băm MD5 của bạn), điều này sẽ an toàn hơn từ xung đột quan điểm.
Bạn sẽ không nhận được một vụ va chạm với MD5. –
@TomAndersen thực sự? Tôi sẽ không chắc lắm. Nó không phải là khả năng, và tôi không nghĩ rằng hầu hết các ứng dụng thực tế của MD5 đang bị đe dọa bởi va chạm, nhưng nó thực sự là có thể. – Viccari
Nó chỉ có thể cho một tình huống tấn công, thậm chí sau đó nó khó khăn. Kích thước của không gian băm không phải là thứ có thể tưởng tượng được. –
- 1. php Tên tệp duy nhất khi tải lên
- 2. Cách tạo tên tệp ngắn cho ảnh đã tải lên?
- 3. Cách tốt nhất để lưu trữ các tệp do người dùng tải lên trong webapp
- 4. tải lên hình ảnh qua php bằng cách sử dụng tên tệp duy nhất
- 5. Django - phục vụ người dùng tải lên hình ảnh
- 6. Tạo tên người dùng duy nhất từ họ và tên?
- 7. App Engine - Datastore vs Blobstore cho ảnh hồ sơ do người dùng tải lên?
- 8. Cách tốt nhất để lưu trữ tệp do người dùng tải lên trong một trang web là gì?
- 9. Chiến lược sao lưu cho các tệp do người dùng tải lên trên Amazon S3?
- 10. Lưu trữ các tệp do người dùng tải lên trên máy chủ web
- 11. Cách tải hình ảnh kênh Youtube qua tên người dùng?
- 12. Tải nội dung của tệp do người dùng tải lên trước khi lưu
- 13. Cách phân phát tệp do người dùng tải lên ở Django?
- 14. Instagram từ Android mở trên người dùng nhất định và thêm chú thích cho hình ảnh được tải lên
- 15. Cách @Validate tên người dùng duy nhất vào mùa xuân?
- 16. Tạo các băm duy nhất cho các kiểu django
- 17. Thực tiễn tốt nhất để tải lên nhiều hình ảnh (2000+) lên máy chủ
- 18. Tải lên lại bằng API tải lên tệp HTML5 -
- 19. Tạo băm duy nhất trong Ruby/Rails
- 20. Tải hình ảnh được tạo JavaScript lên Django
- 21. Cách tốt nhất để tải lên và lưu trữ hình ảnh trên trang web là gì?
- 22. NSFileManager tên tệp duy nhất
- 23. Google App Engine (Python) - Tải lên tệp (hình ảnh)
- 24. Cách tạo vân tay người dùng duy nhất trong PHP
- 25. Hình ảnh băm cho hình ảnh rất giống nhau
- 26. Cách tải hình ảnh lên canvas HTML5
- 27. tải hình ảnh từ android lên webservice
- 28. Đếm người dùng duy nhất bằng Mapreduce cho Java Appengine
- 29. Tải lên + Giao diện người dùng jQuery
- 30. html5 Tải lên hình ảnh
tốt về khách hàng S3 không hoạt động tốt với số lượng lớn tệp trong một thư mục. Chia nhỏ thành các thư mục khác nhau có vẻ giống như cách để đi. –
cách để s3 cho phép bạn tự động tạo thư mục mới khi tải lên? Tôi không thể tìm thấy chính sách nhóm cho việc này. – jedierikb
Không có thư mục nào trong thực tế, vì vậy bạn chỉ cần đặt tên tệp trên tệp tải lên là toàn bộ đường dẫn. –