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

Estoy guardando casillas de verificación en una sola columna en mi base de datos usando implode (). ¿Cómo puedo generar casillas de verificación marcadas para que cada vez que haga clic en el botón Editar las casillas de verificación se puedan ver o editar?

Estoy convencido de que Tealeaf Academy es el mejor recurso para aprender RoR profesionalmente. ¿Alguien en Portland, O puede dar fe de su experiencia en el sitio web?

Terminé el desarrollo de mi sitio web localmente. ¿Cuál es el siguiente paso para tener una versión .com?

¿Cuál sería un trato justo para construir un sitio web para un amigo que quiere pagarme para construirlo y luego dividir las ganancias?

Estoy desarrollando un sitio web para un cliente. ¿Cómo lo creo sin un dominio?

Enseño un curso de pregrado en desarrollo web (actualmente usando Rails). Si cambio a Java / Kotlin como lenguaje de programación, ¿recomendaría Spring, J2EE u otra cosa?

Estoy tratando de crear un sitio web que contenga todas las ligas deportivas en su área. ¿Qué tipo de API usaría para esto o tendría que comenzar a construir una base de datos grande?

Estoy aprendiendo Ruby on Rails con miras a un cambio de carrera en el desarrollo web. Soy reacio a cambiar a una Mac, pero me han dicho que es la mejor opción para el desarrollo. ¿Es esto cierto?

Hice un excelente formulario de contacto. ¿Cómo hago (usando HTML y CSS), que cuando alguien presiona 'enviar', me envían el formulario completo por correo electrónico?

Sé PHP y Python igualmente bien. Quiero desarrollar un sitio web. ¿Qué idioma debo elegir y por qué?

Quiero usar ReactJS en el frente y Go en el back-end. ¿Qué marco MVC puedo tener para proporcionar capacidades como enrutar y acceder a la API Go de backend?

Necesito impartir un seminario en dos días sobre aplicaciones web. ¿Cuáles son las últimas tendencias?

Descargué el volcado completo de wikitaxi y descargué todas las demás cosas necesarias, pero no muestra imágenes ni ecuaciones / fórmulas matemáticas. ¿Cómo hago para hacer eso?

Tengo una idea y quiero hacer un sitio web interactivo para ir de compras. Sé Java y Python. ¿Qué debo aprender para hacer un sitio web fuerte?

Me estoy enseñando a codificar como un hobby y sé HTML, CSS y algunos jQuery / JS. ¿Cuáles son algunos proyectos front-end que podría intentar construir para ponerme a prueba?