Lo que estás pidiendo hacer es intentar hacer es imposible. Si la máquina puede descubrir cómo ejecutar una aplicación, también lo puede hacer un humano.
Ahora, su código fuente debe ser absolutamente legible para fines de mantenimiento y auditoría, si la seguridad es realmente una de sus principales preocupaciones.
En cuanto a evitar que las entidades maliciosas hagan ingeniería inversa a tu WAR, tienes algunas opciones, algunas más radicales.
-
Cambie su método de entrega a software-como-un-servicio. Las entidades hostiles nunca ven su WAR, pero usted asume riesgos adicionales, ya que su empresa será la atacada ahora, no sus clientes. También está centralizando los datos de sus clientes, por lo que la violación de un cliente en un sistema mal diseñado afectará a todos los clientes.
-
Use alguna forma de administración de licencias dentro de su aplicación. Deje en claro que cualquier persona que eluda las restricciones sufrirá a manos de su departamento legal. Lo difícil de esto es detectar cuando alguien intenta realizar una ingeniería inversa en tu WAR. Dejar de lado las comprobaciones de autointegración aleatorias en el código fuente indica que la forma en que llamar a casa por teléfono en caso de que falle podría ser útil, pero está en una situación inestable: los atacantes pueden eliminarlas.
-
Ir a código abierto. En serio, vaya al código abierto y ubíquese como consultor y SaaS como se mencionó anteriormente. Esto puede conllevar serios beneficios, por ejemplo, la Ley de Linus puede entrar en juego. Sin embargo, si su algoritmo es un secreto comercial o si su seguridad se basa en el Principio de Kerckhoffs , esto puede ser una mala idea. . Obviamente, deberá volver a diseñar los planes de flujo de efectivo actuales de su empresa. También hay diferentes modelos para esto, por ejemplo, ediciones comerciales gratuitas y ediciones profesionales, o complementos de pago.