2009-10-11 48 views
6

Tengo un código fuente de PHP que estoy hospedando con la empresa de hosting XYZ. Estoy usando un software de encriptación PHP como Zend Guard o ionCube para proteger la fuente de ser vista por cualquier persona (sysadmin o hacker que piratee el administrador del sistema).Cifrado de fuente PHP - Eficacia y desventajas

  • ¿Qué tan fácil/difícil es para alguien que tiene acceso completo al sistema (como el administrador de sistemas o un hacker que hackea el administrador del sistema) para descifrar el código fuente? No sé cómo funciona el software de cifrado, pero supongo que utilizan alguna clave, que debería permanecer en el servidor y, por lo tanto, es accesible para un administrador de sistemas o un pirata informático. Si tiene conocimientos técnicos sobre cómo hacerlo, no dude en ofrecer una explicación en su respuesta.

  • ¿El uso de dicho cifrado fuente ralentiza el sitio? Si alguien tiene experiencia de primera mano o sabe de alguien que tiene experiencia de primera mano;)

estoy interesado en los aspectos técnicos de esto, ¿cómo cifrado eficaz es .. y sus desventajas, de los que ellos utilizado o considerado el uso de ellos

Gracias (todas las respuestas votos/comentarios son de hasta votaron)

Editar: las respuestas hasta ahora parecen estar haciendo caso omiso de lo que estoy tratando de entender .. estoy tratando de entender la efectividad del cifrado. Realmente no tengo ningún código que necesite protección de los malos, lo de arriba fue solo un ejemplo, por lo que los consejos como código abierto o contratar un abogado realmente no abordan mi curiosidad técnica. A + a cualquiera que entienda el punto

+10

Si no confía en su empresa de hosting, no la use. Si no confía en ninguna empresa de alojamiento, entonces sea su propio anfitrión. Si no confías en ti mismo ... –

+6

a nadie le interesa tu código – hop

+0

¿por qué quieres hacer esto? ¿Paranoia? – Peter

Respuesta

7

Encriptación (o codificador) los esquemas intentan ocultar su código como un archivo cifrado. Obviamente, el código debe descifrarse en el momento de la ejecución, lo que agrega una sobrecarga inútil. Algunos de estos también insisten en que el sistema host instale rutinas especiales, que a los hosters les desagrada intensamente, porque no desean configurar configuraciones especiales solo para usted.Pero la parte mala es que contienen las semillas de su propio deshacer: para ejecutar en el host de destino, deben contener el software de descifrado. Entonces, si usa uno, entrega el desencriptador necesario para obtener su código. Es solo cuestión de ubicarlo; una vez encontrado, su código es completamente descifrable y expuesto. Estos simplemente no son seguros.

Obfuscación esquemas codificar los nombres de los identificadores, eliminar los comentarios y el formato. Pero el código ofuscado se ejecuta exactamente como el original, sin gastos generales y sin necesidad de soporte de tiempo de ejecución especial. Los ofuscadores dependen de la dificultad inherente para comprender los programas en general. Los programas son lo suficientemente difíciles de entender cuando están bien diseñados, los nombres están bien elegidos y hay buenos comentarios en el código. Todos esperamos que nuestros programas estén bien diseñados, pero si los nombres son malos y los comentarios han desaparecido, son bastante difíciles de entender. Examine su propia experiencia con el código de otras personas.

La gente dirá, "pero cualquiera puede inspeccionar el código ofuscado y entenderlo". Eso es cierto si tienes una pequeña aplicación. Si su aplicación tiene una escala (decenas de páginas de código), es extremadamente difícil entender lo que está haciendo cuando todos los nombres de las variables están codificados. Cuanto más grande sea tu código, mejor será la ofuscación para protegerlo.

Si desea ver ejemplos de lo que hace un obfuscator PHP, consulte nuestro Thicket PHP Obfuscator.

+0

+1 para una gran explicación. ¿El punto de escala es tu propia observación o está documentado en alguna parte? – Chris

+2

Es mi observación, pero creo que es ampliamente aceptado por la comunidad de ingeniería inversa.Si tiene un programa grande, bien diseñado y bien documentado, es difícil de entender. Hay toneladas de herramientas para ayudar a las personas a "entender" el código no ofuscado, y la mayoría de la gente le dirá que esas herramientas realmente no funcionan tan bien. –

0

la única cosa que puede hacer frente a la empresa de alojamiento es tener una buena licencia y abogado

+0

quieres decir abogado? – hop

1

Si puede ser ejecutado se puede decompiled. Quédese con su equipo legal para acceder a los derechos, no a la encriptación :) Mejor aún, su proyecto de código abierto: P

EDITAR: 'Cifrado' también aumenta mucho los tiempos de ejecución.

2

¿Por qué exactamente necesita encriptar su código fuente? Si lo portas como una protección contra posibles hackers, por favor crea cuando digo que si realmente quisieran desencriptar tu código fuente, lo harían. Es posible con ionCube, la última vez que lo verifiqué.

En cuanto al rendimiento, creo que Zend es un poco más rápido que ionCube debido a que no requiere ningún archivo adicional. Pero como dije antes, no confíe en el cifrado para nada.

+0

Gracias finalmente a alguien que recibió mi pregunta :) Entonces, ¿qué necesito para descifrar el código y cuánto tiempo tomaría eso? – Chris

+1

Eso depende; hay servicios que hacen esto por un cargo, y hay un programa llamado Dezender que puede descifrar archivos. Sin embargo, preferiría no seguir los pasos reales del código de ingeniería inversa. –

+0

¿Hay algo similar disponible para el ionCube? Esto es para un proyecto educativo, no para uso externo. – Chris

-1

Por lo que sé, los codificadores PHP en realidad no codifican el código PHP. Simplemente cambian los nombres de las variables y agregan un código de basura innecesario, por lo que resulta MUY difícil para cualquiera averiguar qué hace el código. El problema es que no pueden ocultar ninguna contraseña (ya sea la contraseña de administrador codificada o los datos de conexión de la base de datos).

Así que no se aseguran de que su código sea seguro, simplemente hacen que sea muy difícil para cualquiera que lo entienda.

+0

Pensé que los que cambian los nombres de variables y agregan basura eran los ofuscadores, ¿no? Pensé que los encriptadores hicieron algo más, usaron una clave o algo así y supuestamente fueron mejores en lo que se supone que deben hacer, ¿no? – Chris

7

Ni Zend Guard ni ionCube usan cifrado, en su sentido matemático, para proteger su código. Lo que hacen, excepto la ofuscación ya descrita por otras respuestas, es la codificación.

Este es un proceso que normalmente realiza el intérprete PHP cada vez que se accede a su script: su script PHP se compila en un formato de bytecode, que luego se ejecuta. Lo que hacen esencialmente los codificadores como Zend Guard e ionCube es un proceso equivalente, solo que se hace una vez, y solo el bytecode "compilado" se pone a disposición o se carga en el servidor.

Esto significa que realmente recrear el mismo código que una vez escribió es completamente imposible. Lo que no es imposible, y esto también es una ofuscación, es la ingeniería inversa del código compilado u ofuscado para descubrir qué está haciendo.

En resumen, diría que estos productos son muy buenos en la protección de su código- en contraposición a la protección de su lógica .

+0

Parece que esto tendría importantes beneficios de rendimiento, ¿es así? –

+1

No estoy seguro, pero creo que sí. Productos como Zend Optimizer utilizan esta técnica para lograr su beneficio de rendimiento, y no veo por qué no obtendría los mismos resultados con Zend Guard. – eliego