En teoría, su sugerencia es perfectamente razonable. Si los navegadores bloquean todas las solicitudes POST de origen cruzado de forma predeterminada, y se requiere una política CORS para desbloquearlas, muchas de las vulnerabilidades de CSRF desaparecerán mágicamente. Como desarrollador, solo debe asegurarse de no cambiar el estado del servidor en las solicitudes GET. No se necesitarían fichas. Eso sería bueno.
Pero no es así como se construyó Internet en el pasado, y no hay forma de cambiarlo ahora. Hay muchos usos legítimos de las solicitudes POST de origen cruzado. Si los navegadores cambiaran repentinamente las reglas a mitad del juego y lo prohibieran, los sitios que confían en las reglas antiguas dejarán de funcionar. Romper los sitios existentes de esa manera es algo que intentamos evitar en la mayor medida posible. Lamentablemente tenemos que vivir con nuestro pasado.
Entonces, ¿hay alguna forma en que podamos ajustar el sistema para que funcione mejor sin romper nada? Una forma sería introducir un nuevo verbo HTTP, llamémoslo PEST, que funciona como POST solo que todas las solicitudes PEST están marcadas previamente y sujetas a las políticas CORS. Esa es solo una tonta sugerencia que inventé, pero muestra cómo podemos desarrollar los estándares sin romperlos.