Asegurar mi API: concepto de tokens de acceso

0

Antes que nada quiero disculparme por la mala ortografía y la gramática. El inglés no es mi lengua materna.

He creado una comunicación JSON entre un front-end (sitio web) y mi servidor web Node.js. Quiero tener en cuenta que podría extender mi interfaz de usuario a las aplicaciones móviles, de modo que permito el acceso, control, permiso y origen: *. Ahora, asegurar la API a mi servidor web Node.js es un gran problema. Soy nuevo en el tema de seguridad y quiero mostrarle un borrador de cómo deseo desarrollar mi seguridad antes de formular mis preguntas:

Procedimiento general: estoy validando todos los datos de entrada en el lado del cliente, esto incluye no solo verificar si, por ejemplo, El correo electrónico proporcionado tiene un formato correcto, pero también escapa a las posibles entradas de XSS con htmlspecialchars() . Hago un Ajax HTTP POST con mis datos validados y el token de acceso (en el encabezado HTTP) al back-end. En el back-end descarto solicitudes que no coinciden con ningún registro de base de datos con ID de usuario (en objeto de sesión) + token de acceso en mi tokenDB. Finalmente. También estoy validando datos OTRA VEZ en el back-end.

Cómo hago mi registro e inicio de sesión:

  1. Formulario de registro con campos de texto que están ocultos con CSS y verificación de correo electrónico.

    • campos ocultos para evitar spambots
    • verificación de correo electrónico para hacer la vida más difícil para los spammers manuales
  2. Inicio de sesión: el correo electrónico y la contraseña se envían directamente al servidor y, si se encuentra un registro de usuario en el UserDB

    • el inicio de sesión es satisfactorio
    • ID de usuario + token de acceso generado aleatoriamente + fecha > se ingresa en el tokenDB
    • el ID de usuario se guarda en una sesión y se devuelve un token de acceso en el encabezado HTTP 'accessToken'

Espero que este borrador rápido le brinde suficiente información para un comentario calificado.

Mis preguntas:

  1. ¿La validación que estoy haciendo es suficiente? ¿Qué posibilidades de XSS / otras amenazas no he eliminado?
  2. ¿Es la traducción htmlspecialchars() suficiente para evitar XSS?
  3. ¿Comprendí correctamente el concepto del token de acceso?
  4. ¿Cómo creo un token de acceso?
  5. ¿Es suficiente para almacenar el ID de usuario en la sesión?
  6. ¿Es necesario HTTPS? - > No quiero pagar por certificados
  7. ¿Cuál es su impresión general de mi borrador de seguridad?

Espero que hayas entendido mi explicación del concepto de proteger mi API. Realmente espero obtener algún comentario profesional!

Gracias, MZ

    
pregunta Matthias Zimmermann 25.08.2014 - 15:37
fuente

0 respuestas

Lea otras preguntas en las etiquetas