Al igual que con muchos problemas de seguridad, es una respuesta sutil: kolossus ofrece una buena visión general.
Ayuda a comprender cómo un atacante podría comprometer su API y cuántas violaciones de seguridad se producen.
La mayoría de las infracciones de seguridad son causadas por errores o descuidos, y los atacantes las buscan. Un atacante que está tratando de poner en peligro su API primero intentará recopilar información al respecto, ya que es una API, presumiblemente usted publica documentación de uso detallada.Un atacante utilizará este documento y probará muchas formas diferentes de hacer que su sitio se cuelgue (y por lo tanto exponga más información, si tiene suerte), o reaccionará de maneras que no anticipó.
Tienes que asumir que el atacante tiene mucho tiempo, y guionará su ataque para probar cada avenida, como un ladrón con tiempo infinito, que recorre tu casa probando cada puerta y ventana, con una cerradura que aprende de cada intento.
Por lo tanto, si su API expone un método como getUserInfo(userid)
, y el ID de usuario es un número entero, el atacante escribirá un script para iterar de 0 hacia arriba para averiguar cuántos usuarios tiene. Intentarán números negativos, y max(INT) + 1
. Su aplicación podría perder información en todos esos casos y, si el desarrollador olvidó manejar ciertos errores, puede exponer más datos de los que esperaba.
Si su API incluye lógica para restringir el acceso a ciertos datos, p. Ej. puede ejecutar getUserInfo
para los usuarios de su lista de amigos: el atacante puede tener suerte con algunos números debido a un error o un descuido, y sabrá que la información que está obteniendo se relaciona con un usuario válido, para que pueda construya un modelo de la forma en que su aplicación está diseñada. Es el equivalente a un ladrón sabiendo que todos sus cerrojos provienen de un solo fabricante, por lo que solo necesitan traer esa cerradura.
Por sí mismo, esto no puede ser una ventaja para el atacante, pero hace que su vida sea un poco más fácil.
Dado el esfuerzo de usar UUID u otro identificador sin sentido, es probable que valga la pena dificultar las cosas al atacante. No es la consideración más importante, por supuesto, probablemente no constituya las 5 mejores cosas que debes hacer para proteger tu API de los atacantes, pero ayuda.