A misconfigured world-open resource is a huge security risk, but world-open resources have valid use cases. The only signal Amazon has that somebody might have misconfigured a resource to be world-open is if somebody tries to access it with authentication credentials, so they decided to interpret that configuration as "hey user, did you really intend for this to be world-open?"
We can't correct those because backwards compatibility is necessary to creating a global network that lasts decades. It's the railway effect... One simply can't expect every player to update their architecture religiously because they can't afford to, therefore what is made public tends to stick around for ages, and anything that fails to recognize that stickiness (IPv6 is my go to example) does so at its own peril.
The number of services I use that I wish had a "warning" side-channel for letting me know something in my query was off, let me tell you...
In fact, it's the recommended way to do things like tell a client things it might need to know. Example: "The game servers will be shutting down in 15 minutes for maintenance."
Working code and rough consensus is how we progress.
What's wrong with that? The only issue I see is the _in their opinion_ bit. If there's confusion about the spec, then it should clarified and codified. But otherwise: yes, you should absolutely aggressively reject everything not in spec.
"Public-readable resources get requested a lot, with no predictability over who or how many independent agents could be requesting them at once; so, to decrease the likelihood of requests on such resources DDoSing our backend, we could at least limit there to being exactly one canonical way to acceptably request the URLs of such resources. That way, such resources will end up hot in any edge-cache after the first request, and any non-normalized requests will break [and so be removed from the logic] — rather us needing to serve the same resource multiple times to get it saved under under multiple cache keys."
(I'm guessing that S3 also errors out if you submit random unrecognized query-string parameters on such requests?)
Doesn't look like it. I checked out the recent bankruptcy filing that was posted to s3, and you get the doc just the same with or without random query params:
https://pacer-documents.s3.amazonaws.com/33/188448/042120640...
https://pacer-documents.s3.amazonaws.com/33/188448/042120640...