Este no es mi principal mecanismo anti-CSRF; Sé que las solicitudes https no tienen un encabezado de referencia; Sé que los usuarios o los cortafuegos pueden eliminarlo o establecerlo en un valor fijo arbitrario.
Pretendo este mecanismo solo como una posible capa de seguridad agregada que previene CSRF en caso de que mi mecanismo principal sea ignorado por alguna razón.
Mi código será algo como esto:
if(isset($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']))
if(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)!=$_SERVER['HTTP_HOST'])
exit('Anti-CSRF mechanism!');
Creo que esto no tiene problemas de soporte y usabilidad. ¿verdad?