Descripción
Estoy diseñando una aplicación Node.JS (más como un sitio web completo). La aplicación enviará cinco archivos JavaScript y tendrá <script>
etiquetas que los vincularán.
Pregunta
¿Cómo puedo evitar que los usuarios y atacantes miren y editen mi código ?
Un ejemplo sería:
Ctrl+ Shift+I
En Devtools , vaya a Fuentes , seleccione un archivo para editar (es decir
index.html
) y escriba edicionesAl pulsar Ctrl+ Shará que la edición en vivo que se produzca
Me gustaría evitar que el ejemplo anterior suceda ... ¿Es posible?
Esto es lo que pensé:
Crearé otro archivo JavaScript del lado del cliente, prevent_keys.js
Escuchará por Ctrl+ Shift+ I.
Si regresa
true
(es decir, se presionaron las teclas), lo hará conlog
las teclas.
Sin embargo, eso no impedirá que el usuario use Devtools directamente.
fuente
Respuestas:
Literalmente, no puede evitar que los usuarios accedan y modifiquen el contenido que les está enviando. No tiene control sobre el navegador, o qué navegador usan, o si de hecho están descargando su código fuente a través de un navegador. Está ejecutando su código en el dispositivo de otra persona. No debe ni puede asumir nada sobre la integridad de este dispositivo.
Si tiene un código que no desea exponer, no lo envíe al navegador. En su lugar, deje que el navegador envíe una solicitud a un servidor donde ejecute el código secreto.
Como ejemplo concreto, no verifique las contraseñas en el cliente. El cliente podría modificarse para decirle siempre al servidor que "la contraseña era correcta". En cambio, la autenticación debe realizarse en su servidor de confianza.
fuente
No puedes Una de las reglas fundamentales de la informática: no puedes confiar en el cliente . Independientemente del esquema inteligente que piense, puedo evitarlo si tengo el control del cliente.
fuente
¿Por qué no quieres que se modifique el código?
¿Seguridad? ¿Confiar? ¿Secreto comercial?
Luego, no envíe el código, haga que el cliente envíe una solicitud y devuelva un resultado. Tal vez no sea un resultado privado o privilegiado, solo un hecho es suficiente para muchas IU.
¿Porque las versiones ligeramente modificadas de su propio código están perjudicando sus resultados?
Use un ocultador de código, un gestor de nombres y segmentos de código triviales.
Estas técnicas elevan la barra en el nivel de habilidad real y las herramientas necesarias para hacer una ligera variante de su sitio web. Solo tenga en cuenta que estas técnicas pueden hacer que su código sea más lento, pueden introducir errores y mensajes de error interesantes y sin sentido, y aún así pueden ser superados por alguien con las herramientas y / o habilidades adecuadas. Así que realmente considera si eso vale la pena. Al final del día, cualquiera podría escribir el mismo código.
fuente