จากกรณี ทรูหลุดกระจุย อันนี้
https://pantip.com/topc/37561690
ผมละเสียวๆเลย เก็บทุกอย่างไว้ แต่ไม่รู้ที่ตั้งค่ามันโอเคไหม ใครมี best practice ที่ควรจะเป็นแนะนำหน่อยนะครับ
ยิ่งกรณีนี้ที่ต้องเปิด public ข้อมูลรูปผ่านเว็บด้วย นอนไม่หลับเลย
ขอบคุณครับ
ลองคิดดูอยู่ที่ true หรือ aws ที่ผิด
เพราะลูกค้า aws s3 ไม่ได้มีแค่ true เจ้าเดียว
AWS มีเอกสารแนะนำการใช้ S3 ที่เป็น Best practices ให้ตรวจสอบอยู่นะครับ แล้วมีเว็บอื่นๆ เยอะแยะมากมายที่ให้คำแนะนำเพิ่มเติมครับ
How can I help ensure the files in my Amazon S3 bucket are secure?
กรณีไม่ได้ใช้ IAM ของ AWS (ซึ่งจะทำให้จัดการเรื่องสิทธิต่างๆ ได้ละเอียดกว่า) ทำให้จำเป็นต้องเปิดข้อมูลรูปแบบ public เพื่อให้โค้ดของเราจัดการเอง อาจจะทำแบบนี้เพื่อลดปัญหาการเข้าถึงไฟล์โดยตรงครับ
กรณีข้อมูลทั้งเว็บเป็น public เมื่อ scan จากหน้าเว็บ จะเข้าถึงได้เฉพาะภาพที่ใช้บนเว็บ ไม่สามารถ scan ที่ bucket ตรงๆ ได้
กรณีมี user และแยกสิทธิกันเข้าถึงรูปภาพ user จะเห็นและเข้าถึงได้เฉพาะรูปที่เว็บยอมให้เห็น แต่ถ้านำ URI ของรูปนั้นๆ ตรงๆ ส่งให้คนอื่น คนอื่นจะเข้าถึงภาพนั้นได้เช่นกัน
ถ้าซีเรียสมากๆ อาจจะใช้วิธีทำ pre-signed url โดยกำหนดให้ object permission ไม่เปิดสิทธิอะไรเลยให้ Everyone แต่ตอนส่ง request url ให้ส่ง pre-signed request ไปด้วย ซึ่งกำหนดเวลาหมดอายุได้
รายละเอียดลองดูในนี้ https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-presigned-url.html อันนี้เป็นของ PHP ซึ่งวิธีการประมาณนี้ facebook ก็ใช้อยู่ (ลองเปิด facebook ไปดูภาพที่อัพโหลดไว้ แต่ตั้งสิทธิที่ไม่ใช่ public แล้วคลิกขวา แล้ว copy image address ไปดู จะมี query string ยาวๆ ต่อท้ายชื่อภาพ)
--