Actualmente estoy tratando de ver cómo prevenir el CSRF.
Mi primera solución fue usar un token que se sugiere en todas partes. Eso, por supuesto, solucionaría este problema:
<img src="http://api.example.com/me/delete">
Peroloquenopuedoentendereseso.
GEThttp://api.example.com/me/delete
Dehecho,fallaráporqueuntokenválidonovinojuntoconesasolicitud,peroloqueimpidequeunatacantehagaloanterioryensulugarsimplementehacelosiguiente
GEThttp://api.example.com/me/token/generate//parsetheresponseGEThttp://api.example.com/me/delete?token=...
Sehapasadountokenválidoalolargodelasolicitud,miusuarioahoraestáeliminado...
MiAPIRESTpermitequeserecibacualquiersolicitud.
header("Access-Control-Allow-Origin: " . $_SERVER["HTTP_ORIGIN"]);
La razón por la que "necesito" es que no solo uso la API REST en el propio dominio a través de formularios y JavaScript. Pero estoy haciendo solicitudes usando cURL en C ++.
Si los tokens en este caso no son una solución "segura", ¿cuál sería / podría ser una solución más segura / mejor?
Además, ¿qué hace algo como Spotify, mientras que ambos tienen su "API web" y el software de música en sí?
También, y sé que esto es inverosímil, pero ¿es posible permitir que cualquier acceso a mi API tenga una autenticación por origen?
Por lo tanto, si enlace está "conectado a" la API, no significa que enlace es (o más cuando solicite el uso de cURL).
Sé que esto es inverosímil, ya que la "solución" sería verificar el encabezado de origen, pero se puede falsificar.