example auth php wordpress code-access-security api-key

php - wp api authentication example



¿Cómo puedo proteger mi complemento para que solo los usuarios que lo pagan puedan usarlo? (5)

Estoy desarrollando algunos plugins (wordpress) y estoy planeando tener un arancel de licencia para quien quiera usarlo.

Por lo tanto, necesito una forma de asegurarme de que este complemento no se cargue en un servidor donde cualquiera pueda descargarlo y usarlo de forma gratuita.

Así que estaba pensando en usar una clave API. Clave de API válida = el usuario puede usar el complemento. Invalid = el complemento no funciona.

He visto esta publicación PHP API Key Generator pero no soy mucho más sabio de eso.

También sé que, como es PHP, cualquiera puede entrar en el código y desactivar la verificación API (estoy adivinando)

¿Cuál es la mejor manera de proteger mi complemento? ¿Clave API? ¿Otras maneras? ¿Alguien tiene un enlace a algún buen tutorial sobre el tema?


Se puede encontrar un excelente artículo aquí, aunque esto no cubre solo algunas cuestiones a tener en cuenta antes de seguir la ruta mucho más lejos http://www.littlehart.net/atthekeyboard/2007/07/20/protecting-your- php-code /

Aunque para una respuesta más directa a su pregunta, use un sistema de clave API y luego codifique su PHP utilizando algo similar a Zend Guard, de modo que el usuario no pueda simplemente ingresar y eliminar la verificación de la clave API a medida que se codifica el código.


Usar una clave API probablemente esté bien. No puede preocuparse por las personas que piratean su plugin, porque sucederá sin importar lo que haga. Alguien con el conocimiento para eliminar tu verificación API es lo suficientemente inteligente como para eliminar cualquier tipo de protección que pongas en tu script. No puedes preocuparte por estas personas.

Usar productos como Zend Guard no es una opción. Requiere que el usuario final tenga Zend Optimizer instalado en su sistema, y ​​no puede garantizarlo.

Dicho todo eso, no puedes ofuscar ni ocultar tu código fuente de todos modos. Wordpress tiene licencia bajo la licencia GPL, y prohíben estrictamente que los complementos tengan cualquier otra licencia. Si bien puedes vender el complemento, no puedes ocultar el código fuente.


Si su complemento depende de la interacción con su propio servidor, una clave API es una excelente manera de evitar que los usuarios que no pagan la usen.
Sin embargo, si no necesita interactuar con su servidor, cualquier persona que tenga un poco de conocimiento de PHP puede modificar su complemento para eliminar la verificación de la clave API.

Un problema importante aquí es la licencia de su complemento. WordPress es GPL y la GPL tiene una cláusula que requiere que los ''trabajos derivados'' también tengan licencia bajo la GPL. (Eso es un eufemismo: de hecho, toda la GPL se basa en esa cláusula y no funcionaría realmente sin ella).
Existe una gran cantidad de argumentos sobre si un complemento se puede considerar como un ''trabajo derivado''. En mi opinión, no lo es, y creo que no es ético tratar de forzarlo a que se lo considere como tal. Sin embargo, Automattic, los desarrolladores principales de WordPress y la Free Software Foundation (la organización que redactó la GPL) afirman que los complementos de WordPress están legalmente obligados a usar la licencia GPL y no pueden usar otra licencia.
Hasta el momento no ha habido casos judiciales, por lo que no existe ningún precedente, pero existe una considerable animosidad en torno a algunos de los principales plugins de WordPress que no usan GPL, y Automattic básicamente ha amenazado con acciones legales, mientras que el desarrollador de plugins ha dicho "por favor". Demándame". No es exactamente una situación bonita, y diría que, independientemente de la moralidad de la situación, el hecho es que la publicidad negativa normalmente supera los beneficios de un complemento cerrado.

Para resumir: su complemento básicamente debe ser GPL, lo que significa que debe proporcionar un código fuente no encriptado, de modo que cualquier persona puede modificar su complemento para eliminar cualquier restricción que agregue. Pero debería ser fácil para usted hablar con la mayoría de sus clientes potenciales para que quieran comprar el complemento en lugar de usar una versión bifurcada; puede ofrecer beneficios tales como soporte, actualizaciones, etc. que probablemente no estarán disponibles para una versión "agrietada".

Hay varias compañías que venden complementos con éxito, bajo la GPL y sin protección (clave de API, etc.). Aunque, en teoría, cualquiera podría descargar el complemento y subirlo a un sitio público desde el que cualquiera pudiera descargarlo, en la práctica nadie quiere usar una versión no oficial que no se actualizará para las nuevas versiones de WordPress. Entonces, vender complementos parece ser un modelo comercial viable incluso sin protección de ningún tipo.

Por supuesto, todo esto supone que alguien no solo teclea su complemento y lo lleva a cabo manteniendo el código de base por separado. No hay mucho que puedas hacer al respecto, pero es poco probable que suceda.

Por si sirve de algo, si intentas hacer la vida difícil a alguien que decide redistribuir tu complemento, te recomendamos que consideres lo siguiente:
- aún puede reclamar derechos de marca sobre el nombre de su complemento, incluso si el plugin es de código abierto, por lo que puede evitar legalmente que use el mismo nombre que sus clientes conocen
- solo el código PHP en un complemento debe ser GPL - puede distribuir cualquier archivo que no contenga PHP que interactúe con WordPress bajo una licencia separada para prohibir la redistribución. Por ejemplo, CSS, JavaScript e imágenes no tienen que estar bajo la GPL.


para ser sincero, no creo que haya una prueba de balas para evitar que tu complemento se anule, mira WProbot, tienen una forma bastante sólida de validar licencias, pero aún hay cientos de versiones anuladas.

mientras la gente tenga que descargar tu código, alguien lo tendrá en sus manos y lo anulará, lo que puedes hacer es ofrecer una versión de fremium como s2member y AllinOneSEO.


Realmente estoy pensando en esto. Pero es GPL y no podemos ocultar nuestros códigos. Creo que tenemos que hacer un sistema de clave de API más complicado de leer. Estoy pensando en hacer esto. Pero hay una manera de resolver esto con el sistema remove if else desafortunadamente si es de código abierto. Puedes buscar por ejemplo esto: PHP AES encriptar / descifrar