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?
Respuesta
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.
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/ –
¿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:
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.
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.
- 1. ¿Cuál es la forma más sencilla de realizar una solicitud HTTP GET en Perl?
- 2. ¿Es esta una forma segura de hash de una contraseña?
- 3. para una solicitud HTTP
- 4. ¿Cuál es el parámetro de límite en una solicitud HTTP de varias partes (POST)?
- 5. ¿Cuál es una forma relativamente segura de utilizar una cookie de inicio de sesión?
- 6. Es !! una forma segura de convertir a bool en C++?
- 7. ¿Cómo enviar una contraseña de forma segura a través de HTTP?
- 8. telnet enviar una solicitud HTTP
- 9. Cómo escribir una solicitud HTTP
- 10. Enviar una solicitud DELETE HTTP
- 11. ¿Cuál es una forma segura de detener un hilo en ejecución?
- 12. Publicación HTTP segura en Android
- 13. ¿Cuál es la mejor/más segura forma de reinstalar Homebrew?
- 14. ¿Cómo hacer una solicitud HTTP PUT?
- 15. ¿Cuál es la mejor manera de publicar de forma segura una compilación de publicación de sitio?
- 16. Pasar valores de matriz en una solicitud HTTP en .NET
- 17. ¿Es posible hacer una solicitud JSONP de HTTPS a HTTP?
- 18. Almacenar una contraseña de forma segura
- 19. ¿Cuál es el alcance de una sesión HTTP?
- 20. ¿Cómo saber si una solicitud HTTP es de Ajax?
- 21. ¿Cómo enviar una solicitud HTTP en Java?
- 22. Modificar encabezados HTTP para una solicitud JSONP
- 23. Cómo analizar una solicitud HTTP en Java?
- 24. ¿Cuál es la forma más segura de conectarse a Active Directory desde una DMZ?
- 25. iOS: ¿Cuál es una forma segura de crear un directorio temporal?
- 26. ¿Cómo mostrar el tamaño de una solicitud HTTP en Fiddler?
- 27. ¿Cómo obtengo el contenido de una solicitud http en Ruby?
- 28. ¿Cuál es el propósito de los valores "q" en el encabezado de solicitud "Aceptar" de HTTP?
- 29. En ASP.NET, ¿cuál es la forma más rápida de obtener la URL base para una solicitud?
- 30. ¿Cómo realizo una solicitud http usando cookies en Android?
No dependa del lado del cliente para este tipo de trabajo. –
¿Qué tal [OAuth] (http://oauth.net/documentation/getting-started/)? – ghoti