Tomemos, por ejemplo, un juego. Por lo general, cuando compra o descarga un juego que se puede jugar sin conexión, todos los datos necesarios para ejecutar el juego se envían con el ejecutable. Para proteger estos recursos, los desarrolladores utilizan varios métodos de protección, como contraseñas, cifrado, compresión, archivos de archivos, anti-depuración, etc. Por supuesto, la mayoría (si no todos) de estos se pueden diseñar por ingeniería inversa si alguien tuviera que dedicarle suficiente tiempo y esfuerzo.
He estado mirando diferentes juegos en línea y he encontrado que los juegos basados en navegador tienden a ser mucho más seguros cuando se trata de acceso a datos no autorizados. Esto se debe a que (cuando es factible) solo se envía un recurso al cliente cuando se solicita, y un URI ideal generalmente utiliza una cadena aleatoria que no es factible adivinar y que es imposible realizar ingeniería inversa.
Por ejemplo, supongamos que tengo una imagen llamada "duck.png". Luego lo renombro a una cadena aleatoria de 64 caracteres, tal vez golpeando aleatoriamente el teclado. A menos que seas increíblemente afortunado, no podrás adivinar eso. Podría agregar medidas de seguridad adicionales, como hacer que si una IP intenta solicitar un recurso no válido más de, por ejemplo, 100 veces, el servidor los suspenda automáticamente durante un período de tiempo.
Suponiendo que la seguridad está configurada correctamente en un servidor (control de acceso adecuado, API seguras que verifica las solicitudes antes de procesarlas, uso coherente de las cadenas aleatorias), puedo estar seguro de que la única forma en que un extraño podría acceder este recurso es a través de medios legítimos, como jugar el juego?
¿O existen técnicas que los adversarios pueden usar para obtener acceso (fácilmente) a los recursos que estoy tratando de proteger? Supongo que obtener acceso no autorizado a un servidor no es una tarea fácil porque el servidor está protegido.