So che ci sono una miriade di difese contro gli attacchi CSRF. CSRF, tuttavia, è strettamente una vulnerabilità del browser e qualsiasi richiesta proveniente da un browser diverso è "automaticamente" (e giustamente) consentita.
Ma ... come fai a sapere se una richiesta proviene da un browser o no? Per quanto ne so, l'unico modo è esaminare l'intestazione user-agent .
Questo è tutto a posto, ma, a differenza delle intestazioni Origin e Referer, l'intestazione user-agent può essere modificato a livello di codice :
Note: The User-Agent header is no longer forbidden, as per spec — see forbidden header name list (this was implemented in Firefox 43,) so can now be set in a Fetch Headers object, via XHR setRequestHeader(), etc.
Spiacenti.
C'è un altro modo per determinare se una richiesta proviene da un browser? Oppure, per difendersi dagli attacchi CSRF, sei solo destinato a bloccare anche tutte le richieste di non browser?