Bloquear una IP no debería considerarse una opción, ya que no funcionaría. Terminaría bloqueando a cientos de usuarios ya que los proveedores usan NAT para proporcionar una IP externa para muchos dispositivos y posiblemente ni siquiera el que está tratando de bloquear en primer lugar. Lo que podría hacer es que su aplicación genere un identificador único para cada usuario (que probablemente ya tenga) y que su aplicación lo envíe a su servidor después de la conexión, como verificación de que el usuario tiene acceso. Luego puede verificar esto con su lista negra del lado del servidor y continuar desde allí para permitir o denegar la conexión.
También podría intentar hacer un cortocircuito en la aplicación una vez que su servidor quiera bloquearla, de modo que envíe a su aplicación un paquete mágico que la rompa, obligando al usuario a reinstalar cada vez que se conecta, reduciendo el tráfico.
Por supuesto, a menos que mantenga un registro de todas las ID únicas y alguna otra información como la región, tal vez un poco de información del dispositivo, no hay forma de mantener a un usuario realmente fuera, ya que probablemente podrán cambiar la ID única que envíe a su servidor, no deje que eso le impida intentarlo, las masas no son capaces de esto, por lo que probablemente estará bien.
- ¿Dónde puedo monitorear si mis IP están en la lista negra?
- ¿Alguien puede espiar mi teléfono conociendo mi dirección IP o mi Gmail?
- ¿Puede la policía rastrear a alguien específico en TOR basado en direcciones IP?
- Cómo asignar direcciones IP a los nodos conectados en una red
- ¿Puedo hacer un SSH remoto en un servidor Linux con su nombre de dominio en lugar de una dirección IP?
EDITAR:
Olvidé comentar sobre la parte MAC de la pregunta, su servidor nunca conocerá la dirección MAC del usuario a menos que la obtenga a través de su aplicación. Pero esto solo serviría como un identificador como se ilustra anteriormente, solo uno que podría cambiarse mucho más fácilmente que alguna variable oculta en su aplicación.