Tengo una idea para vender JavaScript incrustado para sitios web. ¿Cómo evito el uso no autorizado de la secuencia de comandos incrustada si se copia a otro sitio web?

Si bien esta es una idea excepcionalmente mala, sugeriría pensar un poco fuera de la caja. Hay varias formas posibles de ver desde dónde comenzar:

  1. Servirlo desde su propio servidor con la URL específica vendida al cliente:
    Puede proporcionar un enlace similar a CDN creado para el cliente específico. Eso significa algo como esto:
    [math] https://cdn.example.com/:client-name/my-script.js [/ math] Una vez que se solicita este archivo, tiene todo el poder de su servidor web a mano, lo que significa que puede reenviar el solicitud a un script PHP que aumenta un contador en una base de datos antes de devolver el contenido JS real. De esa manera, puede aplicar una regla de descarga máxima para sus clientes que obviamente no funcionará si está incrustada en otras páginas, por lo que el cliente tiene un interés directo en guardar el script para sí mismo.
    Sin embargo, esto no impedirá que los clientes del cliente accedan al script.
    Entonces, como medida adicional, puede agregar el dominio del cliente a la lista CORS de su servidor web, lo que significa que el script solo puede usar solicitudes AJAX si el dominio de conexión está permitido para CORS.
  2. Sirva un script de cargador y el código real de forma asíncrona:
    Junto con la sugerencia n. ° 1, esto será más efectivo, ya que cualquier solicitud de AJAX a su servidor de origen se puede analizar, almacenar y modificar. Básicamente, debe crear un script que no haga más que solicitar el contenido real a través de AJAX tan pronto como se cargue. Adjunte un secreto de cliente a la URL de solicitud y podrá verificar rápidamente el origen.
  3. Sirva una compilación aleatoria de su script en cada solicitud:
    JavaScript puede hacer lo mismo de muchas maneras. Nada le impide servir una versión única y aleatoria por cliente que está vinculada al nombre de host (por ejemplo, al usarlo así: [math] window.location.host.split (”). ForEach (letter => asignarVariable ( letra))) [/ matemáticas]
    También se puede aleatorizar en cada solicitud para que sea más difícil para los posibles ladrones de código, aunque, por supuesto, no los detendrá.
  4. Use balizas en todo el guión:
    Entonces, aunque seguramente habrá algunos usuarios competentes que analizarán cuidadosamente su código antes de usarlo, la mayoría no lo hará. La mayoría de los propietarios de sitios web no tienen idea de los usuarios de WordPress que no quieren pagar a los desarrolladores web, por lo que copian y pegan todo lo que pueden encontrar. Su objetivo debe ser capturar la URL en la que se ejecuta su script con la mayor frecuencia posible y enviarla a su servidor de licencias. Incluso si logran eliminar una de esas balizas, es muy probable que se pierdan otra. Su servidor de licencias se puede configurar para verificar la URL en una base de datos de URL permitidas e informar todas las demás solicitudes (reguladas) por correo electrónico o similar.

Como advertencia: nada de esto impide que alguien realmente robe y modifique su código. No puede exigir licencias con lenguajes de script, punto final.

En su lugar, debe centrarse en proporcionar un servicio único a sus clientes que no requiera la protección de JavaScript.

Respuesta corta: eso no es posible.

Si alguien realmente quiere obtener la fuente, entonces lo hará. Pero puede hacer que este proceso sea lo más difícil posible para que sea más fácil comprar que piratear.

Intenta hacer esto:

  • Uglifica el código
  • Publique su hoja de ruta de funciones y realice actualizaciones periódicas, lo que hará que los usuarios compren su script para futuras actualizaciones
  • Agregue píxeles de análisis para saber desde qué dominios se accede a su script
  • Solo por diversión, puede agregar un minero de cryptocoin en caso de que el script se ejecute desde un dominio no autorizado 🙂

De todos modos, es mejor tener el núcleo de su producto en el backend, no en el frontend porque el frontend puede ser fácilmente pirateado / reescrito.

PD: eche un vistazo a este proyecto, están haciendo algo similar: visualizar datos, juntos • Plotly

Agregue un cheque a su javascript que se está ejecutando en un sitio web específico. Puede hacer que maneje las fallas enviándole un mensaje de correo electrónico que indique que se han violado sus términos de uso.

Ahora, por supuesto, es probable que un cliente poco ético descubra estas malas noticias y repare el código para evitar que su cheque funcione.

Por lo tanto, debe ofuscar el código JavaScript para que sea muy difícil de entender y, por lo tanto, difícil de parchear. Esto no evitará que un abusador realmente determinado encuentre su cheque, pero evitará que aquellos que no tienen el estómago para el código de ingeniería inversa.

Puede ver los resultados de nuestro ofuscador Javascript (Diseños semánticos).

Usted no

JavaScript se ejecuta en la máquina del cliente. Si funciona en el navegador, el usuario puede acceder a él.

Su idea parece que no funcionaría muy bien.

  1. Tal vez pueda agregar restricciones de dominio para descargar el activo de JavaScript incrustado.
  2. O agregue alguna clave en los parámetros de URL que solo un dominio específico puede usar.

Hay muchas maneras de hacerlo complicado, pero no hay manera de hacerlo confiablemente imposible, terminará usando la mayor cantidad de servidores posible para la aplicación.

More Interesting

Desarrollo web, ¿cuál es el tema de tendencia único más que nada?

¿Cuál es el primer paso para construir un sitio web de cartera?

Cómo establecer un localhost usando Laravel

He descubierto que soy aficionado al desarrollo web. ¿Es este cambio de carrera responsable por ahora y lucrativo para el futuro?

Si alojo millones de blogs con WordPress MU, ¿creará un problema de escalabilidad?

Ya trabajo con HTML5 CSS3 JavaScript y jQuery, ¿qué tecnologías como Sass puedo aprender para acelerar mi proceso de desarrollo?

Quiero convertirme en un desarrollador de stack medio. ¿Desde dónde debería comenzar y cuál debería ser mi plan de ejecución con un tiempo mínimo?

Quiero desarrollar un sitio bancario. ¿Dónde puedo encontrar un buen blog tutorial o sitio que explique sobre el flujo de trabajo del sistema bancario, los diseños de bases de datos, etc.?

Quiero configurar un sitio web de redes sociales, entonces, ¿qué marco web, SDK, herramientas de desarrollo front-end y back-end necesitaré?

Voy a comenzar a desarrollar un gran proyecto de red social. ¿Debo usar Node.JS o necesito usar Java (para el backend)?

Cómo integrar CKEditor con el modelo y vista Codeigniter

Estoy creando un sitio web para una empresa y me preguntaba cuál es la mejor manera de tener un blog dentro para fines de SEO.

Estoy planeando iniciar un sitio web, algo como ScoopWhoop / BuzzFeed. ¿Cuáles son algunas sugerencias útiles?

Soy nuevo en el desarrollo web y no tengo problemas para aprender JavaScript, lo que me molesta es CSS, hay demasiados trucos y no puedo recordar. ¿Qué tengo que hacer?

Tengo una pregunta relacionada con JavaScript. ¿Qué hace el atributo aplazar / asincrónico cuando se agrega a la etiqueta del script?