Proteger REST API

esa siempre es una opcion si alguien no modifica el paquete y cambia el IP, no le va a llegar el trafico de vuelta pero si podria joder

los usuarios del api son conocidos de antemano? (se podría pasar un token, como dice @bheru27, aunque mandar un toque se considera auth en su sentido más amplio)

*token

pregunta, por qué no se puede usar auth?

jenkins

No hay usuarios del api, no hay usuarios, y por ende no hay auth.

De nuevo el ejemplo es el endpoint para crear un usuario

Le vas a pedir al usuario que se logee para crear un usuario?

me refiero a usuarios físicos

es decir, si yo hago mi API y sé que vos y dos personas más son los únicos que lo van a usar

les mando un token por correo con GPG

y con eso se autentica contra el API, incluso para crear sus usuarios

jenkins

Ajam, pero el registro es abierto

Pero usted lo hace con un post desde cierto lugar, entonces ya sabe ciertas cosas para el filtro

en ese caso, lo único que se me ocurre es filtrar comportamientos extraños, creo que no hay de otra

(p.e. cantidad de requests/segundo)

jenkins

Dominio? En el header ‘Origin’?

Y ese limiting, lo haces por IP?

por IP sería lo más simple, pero se puede poner más complejo si es necesario (para evitar falsos positivos con mucha gente detrás de un NAT)

por ejemplo, sacar un fingerprint de IP + propiedades propias del request

jenkins
Por ejemplo?

se me ocurría el header de user agent, pero es trivial cambiarlo y hacer que ya el fingerprint no matchee

ud prodria setiarle un cookie basado en el IP del mae y otras cosas, hacer un hash pero eso serviria para identificarlo

tendría que ser algo que varíe según el cliente que estoy usando, pero que sea difícil cambiarlo programaticamente

mae tienen que ser varias cosas y no decir que es y meterle un hash

si, pero aún así… si yo fuera unatacante

lo primero que pruebo es cambiar el user agent cuando mando el request

tons ese no puede ser uno de los campos

y si, cuando decía fingerprint me refería a un hash de varios campos

si, claro por que mete otros

ix ix

y apenas veo que con otro user agent todo bien, randomizo ese campo en mis requests

pero eso le serviria para identificar, y para algo mas?

y listo, ya puedo hacer cuantos reqs me de la gana