Silverlight y Ofuscación
obfuscation (9)
Soy bastante nuevo con Silverlight y realmente me parece genial. Tengo una pregunta sobre cómo se ejecuta el código del lado del cliente aunque ...
Digamos, por ejemplo, que tengo un sitio que calcula una cierta cantidad en función de los importes ingresados por el usuario. Esto, por supuesto, me encantaría hacer del lado del cliente. La trampa, sin embargo, es que la fórmula utilizada para el cálculo es patentada y es un secreto comercial. Si pongo esta fórmula del lado del cliente usando SL, ¿será seguro? O puede ser reflejado?
Si desea mantener los algoritmos en secreto, no lo empuje hacia el lado del cliente. Ninguna forma de ofuscación o protección es perfecta.
Además, cuando tiene cálculos en el lado del cliente, siempre debe verificar los resultados en el servidor, en lugar de simplemente asumir que son correctos. Supongamos que el cliente está comprometido.
Silverlight empuja el archivo XAP al cliente. El archivo XAP es simplemente un archivo zip que contiene sus ensamblajes .NET, que luego pueden descomprimirse y reflejarse en contra. La compañía para la que trabajo (PreEmptive Solutions) comercializa Dotfuscator, que puede ofuscar los ensamblajes de Silverlight. Ahora mismo tiene que descomprimir el xap, ofuscarlo y volver a cerrarlo, pero estamos trabajando para mejorar el flujo de trabajo.
No caigas en la trampa de pensar que ocultar el algoritmo lo protegerá. Una vez que lo pones en la web, alguien lo resolverá sin importar lo que hagas. Con suficientes datos de muestra, cualquier persona con algunas habilidades matemáticas debería poder descifrar su algoritmo.
Todo lo que puedes hacer es hacerlo más difícil. Si este algoritmo es algo patentado que ha comprado, tendrá que ser del lado del servidor. Poner el algoritmo del lado del cliente es esencialmente publicarlo y usted podría ser responsable.
Solo una nota para los usuarios de Dotfuscator: si crea un proyecto de Dotfuscator, debe usar la propiedad "Ruta de carga de ensamblaje definida por el usuario" en la pestaña "Configuración" para navegar a las librerías de Silverlight. Las rutas que necesitas son:
- / Archivos de programa / Microsoft SDKs / Silverlight / v2.0 / Conjuntos de referencia
/ Archivos de programa / Microsoft SDKs / Silverlight / v2.0 / Libraries / Client
o en sistemas operativos de 64 bits:
/ Archivos de programa (x86) / Microsoft SDKs / Silverlight / v2.0 / Conjuntos de referencia
- / Archivos de programa (x86) / Microsoft SDKs / Silverlight / v2.0 / Libraries / Client
Hay muchas compañías que admiten la ofuscación de las aplicaciones Silverlight 2.0. DeepSea Obfuscator tiene una experiencia muy bien integrada, Dotfuscator también funciona y pronto, el Eazfuscator gratuito también lo apoyará.
IntelliLock y .NET Reactor (mi herramienta preferida) ofuscan mis ensamblajes muy bien.
Si bien la ofuscación no es un método infalible, hace que sea mucho más difícil para alguien ver su código. Uno tiene que saltar realmente a través de aros enrevesados para llegar a su código final si las capas de ofuscación son buenas. Crypto Obfuscator es un ofuscador que admite la ofuscación de ensamblajes de Silverlight.
Otra herramienta genial es CodeFort. Tiene edición gratuita. Véalo en acción en http://www.codefort.org
CodeFort .NET y Silverlight Obfuscator
CodeFort es un ofuscador avanzado y una herramienta de protección para aplicaciones Microsoft .NET y Silverlight.
Obfuscator BAML y XAML: ofuscar el 100% de tu código
CodeFort es la primera herramienta en poder ofuscar identificadores dentro del código XAML y BAML que se usa en las aplicaciones de Silverlight y WPF. Esto hace que sea posible por primera vez ofuscar el 100% de tu código.
Poderosa protección contra los atacantes
Combinando la ofuscación XAML / BAML con potentes funciones de protección como el aleatorizador de referencia y el antitratamiento CodeFort es una herramienta de ofuscación de vanguardia.
Debo COMPLETAMENTE estar de acuerdo con Marcus. Incluso el ensamblado .NET obstruido sigue siendo fácil de leer para un buen programador.
Mi solución sería el servicio WCF para el cálculo. Simplemente inserta todos los datos y da una respuesta. Si su fórmula es muy secreta y no es obvia (como un x + b y + c * z), incluso si alguien tuviera acceso al servicio, le resultaría difícil obtenerlo.