I use Amazon S3 buckets, with the web server having an IAM user key with very limited access that only allows writes.
No reads/listing.
So if the web server gets hacked, the hacker can only write to the bucket, but has no way to know what is already there or access anything in it.