2008-12-03 86 views
60

En primer lugar, no estoy buscando un milagro ... Sé cómo funciona PHP y que no hay manera de ocultar mi código a los clientes sin utilizar el cifrado. Pero eso viene con el costo de una extensión que se instalará en el servidor en ejecución.La mejor solución para proteger el código PHP sin cifrado

Estoy buscando algo diferente ... No estoy buscando encriptar mi código o incluso ofuscarlo. Hay muchos scripts PHP sin código encriptado/ofuscado, pero son aplicaciones comerciales. Por ejemplo, las aplicaciones del foro vBulletin y/o IP.Board.

Sólo quiero saber qué enfoque hacen estos chicos el uso de sus aplicaciones ...

También estoy abierto a otras sugerencias.

Tenga en cuenta que soy una persona soltera que no trabaja para una empresa. Mi producto también es muy específico, no se venderá tanto. Solo quiero que sepan que no puedo permitirme consultar a un profesional de la ley para demandar a alguien o preparar una licencia comercial. Solo busco una manera simple de proteger mi producto simple, si es posible, de alguna manera ...

Respuesta

33

Ofuscar cosas solo puede ser un inconveniente para sus clientes legítimos y respetuosos de la ley, mientras que las personas que quisieran estafarlo no son sus clientes objetivo de todos modos. (corrigió otros pensamientos sobre ofuscación)

Otra sugerencia para proteger su software: cree un modelo comercial en el que el código sea una parte incompleta del valor de su oferta. Por ejemplo, venda licencias de productos junto con acceso a algunos datos que administre en su sitio, o licencia el producto en un modelo de suscripción o con soporte al cliente.

El diseño de un EULA es una cuestión legal, no una cuestión de codificación. Puede comenzar leyendo algún texto EULA para productos y sitios web que use. ¡Puede encontrar algunos detalles interesantes!

La creación de una licencia propietaria es muy flexible, y probablemente un tema más allá del alcance previsto de StackOverflow, ya que no se trata estrictamente de la codificación.

Algunas partes de un EULA que vienen a la mente:

  • Limitar su responsabilidad si el producto tiene errores o cause daños.
  • Explicando cómo el cliente puede utilizar su software con licencia, por cuánto tiempo, de cómo muchas máquinas, con o sin derechos de redistribución, etc.
  • Que le da derecho a auditar su sitio, para que pueda cumplir las licencias.
  • ¿Qué ocurre si infringen el EULA, p. pierden su privilegio de usar su software.

Debe consultar a un profesional del derecho para preparar un EULA comercial.

edición: Si este proyecto no puede justificar el gasto de un abogado, echa un vistazo a estos recursos:

+0

Consultar a un profesional del derecho para mis necesidades sería una locura. No puedo pagar algo así ni mi producto venderá tanto jajaja. Es un producto simple, pero quería protegerlo de alguna manera. –

+0

OK, es suficiente. Sé que un proyecto pequeño no puede permitírselo, no sabía si trabajabas en una gran empresa o no. –

+0

Tienes razón, debería haber dicho que :) –

1

Distribuyen su software bajo proprietary license. La ley protege sus derechos e impide que sus clientes redistribuyan la fuente, aunque no existe una dificultad real para hacerlo.

Pero como ya sabrá, la infracción de copyright (piratería) de los productos de software es pretty common phenomenon.

+0

Sí, pero sé que no se limitan a aplicar una licencia de propiedad. Simplemente no sé los detalles ... Eso es lo que quiero saber, junto con los pros y los contras. El problema es que no puedo hacer lo mismo con mi software, por varias razones ... Una de ellas es que soy una persona soltera, no una empresa. No tengo el poder ni los recursos necesarios para enjuiciar a alguien. Y en mi país, llevaría tiempo demandar a alguien por esto ... –

7

Usted podría utilizar un compilador php:

Roadsend

phc

+0

Parece una buena herramienta, pero la cosa FastCGI me está frenando un poco y en los foros de Roadsend afirmaron que, por ejemplo, en phpBB, primero se debe ejecutar sin compilar para que se creen las bases de datos y se cree el archivo config.php . Corro el riesgo de que mi código no funcione correctamente. –

+0

Ambos enlaces van al mismo lugar. –

+1

fijo. Al parecer, no poner http: // en frente del enlace estaba causando el problema. – grepsedawk

14

Es necesario tener en cuenta sus objetivos:

1) ¿Estás tratando de evitar que la gente de la lectura/modificación de su código? En caso afirmativo, necesitará una herramienta de ofuscación/cifrado. He usado Zend Guard con buen éxito.

2) ¿Está tratando de evitar la redistribución no autorizada de su código? Una licencia de EULA/propietario le dará el poder legal para evitar eso, pero en realidad no lo detendrá. Un esquema de clave/activación le permitirá monitorear activamente el uso, pero puede eliminarse a menos que también cifre su código. Zend Guard también tiene la capacidad de bloquear una secuencia de comandos en particular en una máquina de cliente en particular y/o crear versiones de código de tiempo limitado si eso es lo que desea hacer.

No estoy familiarizado con vBulletin y similares, pero tendrían que encriptar/ofuscar o confiar en que sus usuarios hicieran lo correcto. En este último caso, tienen la protección de tener un EULA que prohíbe los comportamientos que consideran indeseables, y el sistema legal para respaldar las infracciones del EULA.

Si no está preparado/puede emprender acciones legales para proteger su software y no desea encriptar/ofuscar, sus opciones son a) Súbralo con un EULA para que tenga una opción legal si alguna vez lo necesita y espera lo mejor, o b) considerar si una licencia de fuente abierta podría ser más apropiada y solo permitir la redistribución.

+0

¿Zend Guard le permite * ofuscar solo *? Lo he descargado y estoy jugando con él, parece que te permite codificar y ofuscar, pero no * solo ofuscar *. – kalenjordan

6

No he visto el código fuente de VBulletin en algún momento, pero la forma en que solían hacerlo en 2003 era insertar una llamada a su servidor dentro del código. IIRC, estaba en una línea de código realmente larga (como 200-300 + caracteres de largo) y se dividió en varias concatenaciones de cadenas y tal.

No hizo nada "malo" si lo pirateó - el foro todavía funcionaba al 100%. Pero la IP de su servidor se registró junto con otra información y la usaron para investigar y emprender acciones legales.

Su número de licencia estaba incrustado en esta llamada, por lo que podían rastrear fácilmente la cantidad de direcciones IP/sitios web en los que se ejecutaba una copia con licencia.

+0

Ya veo ... Sin embargo, eso se puede editar fácilmente desde el código. Pero gracias por la idea. –

+0

de hecho lo es, si sabes lo que estás buscando. Un amigo mío lo encontró y me lo señaló. No era fácil de encontrar y nos tomó varios minutos para que ambos supiéramos qué diablos hizo el código. :) – Alarion

+1

¡Pero lo encontraste! Si alguien realmente lo quiere, lo encontrarán finalmente ... –

0

La única manera de proteger realmente sus aplicaciones php de otras, es no compartir el código fuente. Si publica su código en algún lugar en línea, o se lo envía a sus clientes por algún medio, otras personas además de usted tienen acceso al código.

Puede agregar una marca de agua única a cada copia de su código. De esta forma puede rastrear las fugas hacia un cliente singe. (¿Pero eso lo ayudará, ya que el código ya está fuera de su control?)

La mayoría del código que veo viene con una licencia y tal vez una garantía.Una línea en la parte superior del guión que le diga a la gente que no altere el guión, tal vez sea suficiente. Yo; cuando encuentro un código fuente no abierto, no lo usaré en mis proyectos. Tal vez estoy un poco engañado, pero espero que no utilicen mi código que no sea OSS.

2

Si no puede crear una "aplicación en la nube" que usted mismo aloja y accede a través de la Web, entonces podría buscar crear un dispositivo virtual usando un servidor virtual (de VMWare, Parallels, Sun, etc.) y instala una versión "lite" de Linux sobre eso. Coloque su código PHP en el entorno virtual e instale la máquina virtual en su servidor. Asegúrese de crear una forma de evitar la carga en la raíz. Por supuesto, esto implicaría visitar físicamente al cliente usted mismo.

0

Vea nuestro SD PHP Obfuscator. Maneja enormes sistemas de archivos PHP. Sin requisitos de tiempo de ejecución en el servidor PHP. Sin gastos adicionales de tiempo de ejecución.

[EDITAR Mayo de 2016] Una respuesta reciente indicó que Zend no maneja PHP5.5. El SD ​​PHP Obfuscator lo hace.

+0

¿No hay un programa de versión gratuita como ese? – AntonioCS

-5

Así que vamos a ver, queremos mostrar a Adán y Eva que hay algún fruto prohibido en un árbol, ADN nos gustaría una manera de evitar que comer ...

¿Qué hay de tener un ángel con una espada flamígera?

  1. Podría sonar ingenuo, y no sé lo que hace realmente su aplicación, pero ¿qué pasa con el uso extensivo de includes?

  2. Para el usuario legítimo, ¿está todo el software que debería ser visible o solo partes de él? Debido a que podría confundir y dar una copia del código fuente para legitimar

  3. Usted puede envolver el php en un recipiente como Phalanger (NET)

  4. Tal vez su preocupación con el robo externo, es decir, su código libremente visibles en la web a medida que los clientes lo usan. Esto podría valer la pena invertir en un alojamiento web barato, por $ 50 al año, registrando a sus clientes legítimos con una serie en su código y haciendo que su aplicación publique información en su sitio web regularmente. Al menos, detectarías cuando el código se ha visto comprometido. Podría empujarlo con autodestrucción después de n días, dándole suficiente tiempo para contactar a su cliente y cambiar la serie. Esta podría ser la única ofuscado include() de todo el código

1

en mi opinión es, pero por si acaso si su programa de código PHP está escrito para el modelo autónomo ... mejores soluciones es c) Se puede envolver el php en un contenedor como Phalanger (.NET). como todos saben, se vincula estrechamente al sistema, especialmente si su programa está destinado a usuarios de Windows. solo puede crear su propio algoritmo de protección en el lenguaje de programación de Windows como .NET/VB/C# o lo que sea que sepa en .NET prog.lang.family sets.

Cuestiones relacionadas