Định nghĩa về Hack
Tôi không chắc chắn hack có nghĩa là gì trong bối cảnh câu hỏi của bạn.
Tôi giả sử rằng bạn thực sự có nghĩa là "bất kỳ ai cũng có thể làm gì đó khác với tải lên tệp" bao gồm xóa hoặc truy cập các đối tượng bên trong nhóm của bạn.
Giải pháp của bạn
Như Ninad đã đề cập ở trên, bạn có thể sử dụng phương pháp hiện tại của mình bằng cách bật "Cho phép truy cập vào danh tính không được xác thực" [1]. Sau đó, bạn sẽ cần tạo hai vai trò trong đó một vai trò dành cho "người dùng không được xác thực". Bạn có thể cấp quyền cho vai trò PutObject đó cho nhóm S3. Điều này sẽ cho phép mọi người truy cập trang của bạn để tải các đối tượng lên nhóm S3. Tôi nghĩ đó là những gì bạn dự định và nó ổn từ quan điểm bảo mật vì IdentityPoolId là một giá trị công khai (tức là không bảo mật).
Giải pháp khác
Tôi đoán, bạn không cần sử dụng Amazon Cognito để đạt được những gì bạn muốn. Có lẽ đủ để thêm chính sách nhóm vào S3, cấp quyền cho PutObject cho mọi người.
Điều này có an toàn không?
Tuy nhiên, tôi không khuyến nghị cho phép truy cập ghi công khai trực tiếp vào nhóm S3 của bạn.
Nếu ai đó lạm dụng trang web của bạn bằng cách spam hình thức tải lên của bạn, bạn sẽ phải chịu phí S3 cho các hoạt động và lưu trữ dữ liệu.
Sẽ là một cách tiếp cận tốt hơn để gửi dữ liệu qua Amazon CloudFront và áp dụng WAF với các quy tắc dựa trên tỷ lệ [2] hoặc triển khai dịch vụ giới hạn tỷ lệ tùy chỉnh trước khi tải lên S3 của bạn. Điều này sẽ đảm bảo rằng bạn có thể phản ứng thích hợp khi có hoạt động độc hại.
Người giới thiệu
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / thấp hơn ngưỡng-cho-aws-waf-tỷ lệ dựa trên quy tắc /