2012-07-29 11 views
6

Estoy usando nodejs para escribir un servicio de carga de imágenes. Los clientes que pagan podrán enviar un archivo de imagen a mi endpoint que he configurado en mi servidor. Sin embargo, cuando todas las solicitudes entran, necesito confirmar que en realidad es un cliente que realiza la solicitud. Pensé en hacer que el cliente me diera su nombre de dominio y simplemente verificaría el encabezado del referer. Sin embargo, alguien podría falsificar el encabezado del referer y usar mi servicio sin pagar. ¿Cómo enfrentan los desarrolladores de SaaS este problema técnico? ¿Es posible arreglar esto sin requerir que mis clientes tengan algún código del lado del servidor?¿Cuál es una forma segura de conocer el referidor/referente en una solicitud HTTP?

+0

No dependa del lado del cliente para este tipo de trabajo. –

+0

¿Qué tal [OAuth] (http://oauth.net/documentation/getting-started/)? – ghoti

Respuesta

1

No puede autenticar un navegador con un encabezado de referencia.

Si desea autenticar a un individuo, es probable que necesite un sistema de inicio de sesión que proporcione credenciales (nombre de usuario/pwd) y los verifique contra su base de usuarios permitidos. Si pasan, entonces configura un cierto tipo de cookie en el navegador que indica que es un usuario legítimo. Las solicitudes posteriores de este usuario contendrán esa cookie que puede verificar en cada solicitud.

La cookie debe ser algo que crees y que puedes verificar que no se puede adivinar o falsificar fácilmente (como una sesión o un token cifrado de tu servidor). Por lo general, establecerá un vencimiento en la cookie después de un período de tiempo para que el usuario tenga que volver a iniciar sesión.

+0

De acuerdo. Existe un marco de código abierto gratuito llamado OAuth que hará gran parte del trabajo por usted: http://oauth.net. Aquí hay un enlace al código JavaScript que puede usar, ya que etiquetó Javascript en su pregunta: http://oauth.googlecode.com/svn/code/javascript/ –

2

¿Está construyendo una imagen externa servicio de alojamiento de sitios web o es para compartir algo que TIENE ser privado y SEGURO? Si es el primero, entonces lea adelante.

Por supuesto, el encabezado puede ser falso. He aquí por qué usted no debe preocuparse por ello:

  1. alternativa es feo: Para construir un servicio de aprovisionamiento seguro, tendrá que desarrollar algún tipo de sistema de fichas que el propietario del sitio web implementa en su extremo también. Lo más probable es que no se registre con usted porque hay alternativas más simples disponibles.

  2. Spoofing tendrá que hacerse en el lado del cliente. Muy pocos "usuarios" realmente harán esto. Dos frikis falsificando encabezados en su propia máquina no harán una gran diferencia para ti. Si escriben algún proxy o middleware que hace que esto funcione automáticamente y muchas personas comiencen a usarlo, podría ser un problema. Sin embargo, esto no es muy probable.

Puedes adivinar ya saben, pero ya que no ha mencionado - que se llama Hotlinking. Google este tema para encontrar más recursos.

Cuestiones relacionadas