Elementos esenciales de seguridad de la API de REST (2)

Parte 1

Los siguientes puntos pueden servir como una lista de verificación para diseñar el mecanismo de seguridad para las API REST.

Mantenga simple los criterios para definir la seguridad. Cuando una solución se vuelve continuamente compleja "innecesariamente", también es probable que deje un agujero de seguridad.

Usar siempre HTTPS. Usando SSL, las credenciales de autenticación se pueden simplificar a un token de acceso generado aleatoriamente que se entrega en el campo de nombre de usuario de Autenticación básica HTTP. Es relativamente fácil de usar, y obtienes muchas características de seguridad gratis.

Nunca exponga información sobre las URL Los nombres de usuario, las contraseñas, los tokens de sesión y las claves de la API no deben aparecer en la URL, ya que esto puede capturarse en los registros del servidor web, lo que los hace fácilmente explotables.

https://api.dominio.com/mantenimiento-usuarios/usuarios/{id}/accion?apiKey=abcd123456789

MUY MALA PRÁCTICA Esta URL expone la clave API Por lo tanto, nunca use esta forma de seguridad.

Considere la posibilidad de OAuth. Aunque la autenticación básica es lo suficientemente buena para la mayoría de las API y, si se implementa correctamente, también es segura; sin embargo, es posible que desee considerar OAuth también. El marco de autorización de OAuth 2.0 permite que una aplicación de terceros obtenga acceso limitado a un servicio HTTP, ya sea en nombre de un propietario de recursos mediante la organización de una interacción de aprobación entre el propietario del recurso y el servicio de HTTP, o permitiendo que la aplicación de terceros Obtener acceso en su propio nombre.

Considere agregar la marca de tiempo en RequestAlong con otros parámetros de solicitud, puede agregar una marca de tiempo de solicitud como encabezado personalizado HTTP en la solicitud de API. El servidor comparará la marca de tiempo actual con la marca de tiempo de la solicitud, y solo acepta la solicitud si está dentro de un período de tiempo razonable (1-2 minutos, tal vez).

Conclusión

Estas prácticas reducen considerablemente los ataques automatizados muy hechos por parte de personas que intentan utilizar la fuerza bruta su sistema.

Estas son 4 conclusiones básicas a considerar:

  1. Validación de parámetros de entrada.
  2. Valide los parámetros de solicitud en el primer paso, antes de que llegue a la lógica de la aplicación.
  3. Ponga fuertes comprobaciones de validación y rechace la solicitud inmediatamente si falla la validación en la respuesta de la API.
  4. Envíe mensajes de error relevantes y un ejemplo del formato de entrada correcto para mejorar la experiencia del usuario.

Parte 1