¿Cómo asegurar de manera confiable las solicitudes JSONP públicas?

Estoy tratando de encontrar si hay una buena manera de prevenir CSRF en un widget de JavaScript incrustado en los sitios web de los clientes.

El widget permitiría a los usuarios finales realizar solicitudes contra las cuentas de nuestros clientes a través de JSONP a un servidor PHP que envía esas solicitudes a nuestra API (no pública).

Hasta este momento, no he encontrado una forma segura de garantizar que todas las solicitudes provengan solo de los sitios web de nuestros clientes. Algunas ideas que he tenido:

Tokens generados en el lado del servidor y devueltos junto con cada solicitud JSONP posterior (aunque no estoy seguro de cómo autenticar la solicitud inicial, ya que el primer token sería legible en JS y cualquiera podría solicitar el 'siguiente' token)Comprobación del encabezado Referer (poco confiable, puede ser falsificado o simplemente no lo pasa el navegador)Utilizando SSL (por supuesto ayudaría pero no resolvería el problema de CSRF)

¿Es esto posible? Me he encontrado con Widget de Fotomoto que parece permitir el mismo tipo de funcionalidad que estamos buscando, pero no estoy seguro de cómo lo están haciendo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta