Alright, so the better way to handle CSRF vulnerability with GraphQL upload spec, is to rely on your own CSRF middleware based on session cookies
Especially if you're using Apollo Server, but not using Apollo Client, cause it won't send the default API headers for CSRF
Writing file uploading logic based on the GraphQL upload spec
Feels that it has not evolved, a ton of boilerplate, and even Apollo discourages if you don't have CSRF guards on your API
It is recommended to use signed upload URLs via mutations but still not a good DX for such a common thing 😅