2017-09-20 75 views
5

Tôi đã cố gắng tìm câu trả lời cho câu hỏi này trong một vài giờ ngay bây giờ, nhưng đã không xoay sở để đưa ra câu trả lời kết luận. Tôi hy vọng một người nào đó ở đây sẽ có thể làm sáng tỏ một số câu hỏi của tôi. Hãy xem xét các URL Ví dụ AWS S3 sau:Hiển thị AWS S3 URL đã ký trong ứng dụng web?

https://some-bucket.s3-eu-west-2.amazonaws.com/uploads/images/some_image.jpg?X-Amz-Expires=600&X-Amz-Date=20170920T124015Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAI6CJYFYSSWMXXXXX/20170920/eu-west-2/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0481296b70633de9efb2fce6e20751df2f55fd79b5ff9570c02ff8f587dce825

Trong ví dụ cụ thể của tôi, URL ở trên là một yêu cầu để xem một hình ảnh trên S3 mà tôi đang phơi bày trực tiếp trong một thẻ HTML img, và người sử dụng trong AMZ -Credential có cả quyền đọc và ghi. URL cũng được đặt hết hạn sau 10 phút. Có thể an toàn để liên kết trực tiếp đến hình ảnh qua URL này hoặc có khả năng trong vòng 10 phút này, chữ ký từ URL này có thể được sử dụng trong yêu cầu REST được tạo độc hại để xóa hoặc sửa đổi hình ảnh thay vì xem nó?

Tôi nghi ngờ một hành động khác sẽ có chữ ký khác nhau để thực hiện điều này không thể, nhưng với sự hiểu biết rất hạn chế của tôi về AWS auth, tôi nghĩ tốt hơn nên hỏi chỉ trong trường hợp.

Tôi biết tôi có thể tạo người dùng chỉ đọc (thêm độ phức tạp) hoặc ẩn URL S3 sau hành động điều khiển trên ứng dụng web của riêng tôi (yêu cầu 2 yêu cầu tải mỗi hình ảnh, làm cho nó không hiệu quả) thay vì tìm hiểu xem cách tiếp cận hiện tại của tôi có an toàn hay không trước khi sử dụng một trong hai cách này.

Cảm ơn bạn đã dành thời gian. :)

Trả lời

2

Nếu url được ký trước của bạn có quyền PUT hoặc DELETE, ai đó có thể cố gắng lấy Signature + AccessKeyId để ghi đè hoặc xóa đối tượng của bạn.

Chỉ cần make sure bạn đang ký url bằng quyền chỉ đọc và tôi đoán bạn là người tốt.

Các vấn đề liên quan