2012-04-03 9 views
5

Estoy trabajando en una aplicación que requiere un servidor para hacer la mayor parte del trabajo pesado. Quiero evitar que los clientes pirateados envíen solicitudes a ese servidor. ¿Hay alguna forma de enviar algún identificador con las solicitudes para que mi servidor pueda preguntar al Android Market si alguien con ese ID realmente compró la aplicación? ¿Cómo voy a hacer eso?Prevención de piratería de Android con solicitudes de servidor

Tenga en cuenta que la protección de la aplicación con LVL no funcionará, porque las personas podrían escribir fácilmente una aplicación para interactuar con el servidor y seguir proporcionando la misma funcionalidad que la aplicación de pago.

Respuesta

6

Primero: no hay 100% de seguridad para todo lo que ejecuta en un dispositivo que no está bajo su control (como los dispositivos Android en su caso).

Se podría hacer "abusar" más difícil por varias medidas:

  • emitir una clave de sesión aleatoria (criptográficamente seguro) después de un inicio de sesión exitoso con un límite de tiempo por lo que un nuevo inicio de sesión tiene que suceder después de un cierto el tiempo ha pasado
  • tema clave la interacción aleatoria (criptográficamente seguro) para cada paso de comunicación que consigue invalidada después de un uso
  • cuando una entrada exitosa pasa por terminada cualquier otra sesión asociada con las mismas credenciales que podrían estar activa antes de que se iniciar sesión
  • "acelerador" de uso, es decir, limitar el número de llamadas por minuto/hora o similares están permitidos (podría ser imposible dependiendo de la aplicación específica)

si realmente quiere que sea muy difícil que pueda emitir un certificado de cliente específico del dispositivo (cuando el cliente compra su aplicación) y usa autenticación de cliente basada en certificados (definida en el estándar SSL): puede invalidar el certificado asociado con el dispositivo si ve abuso sin daño para los usuarios legítimos de otros dispositivos ...

+0

Sé todo eso, pero ¿cómo puedo emitir una clave para alguien que compró la aplicación en el mercado? No hay tal devolución de llamada disponible. – Overv

+0

@Overv no necesita una devolución de llamada para eso ... solo haga que la aplicación la descargue cuando se lance por primera vez (puede generar un certificado sobre la marcha) ... en cuanto a la implementación de la interacción del mercado [Licencias] (http://developer.android.com/guide/market/licensing/licensing-reference.html) – Yahia

1

Tomado de mi solución de esta publicación Android Game Keeps Getting Hacked

implementar su propia biblioteca de licencias

También me refiero a que echa un vistazo a esto desde el Google I/O 2011 YouTube grabación:

Evading Pirates and Stopping Vampires

EDIT:

The Presentation Notes de Evading Piratas y Vampiros de Parada

Algunos puntos clave básicos

Las notas de presentación contienen ejemplos y dirección para la modificación básicas.Sin embargo, en el video de YouTube, hay una discusión sobre la autenticación del lado del servidor y cómo se relaciona con la piratería y las descargas de activos, etc. Específicamente utilizando un Servidor de licencias, En facturación de aplicaciones y App Engine. Pero es una buena base para aprender, independientemente de cómo elija acercarse a una solución.

Cuestiones relacionadas