Descrição
Estou projetando um aplicativo Node.JS (mais como um site completo). O aplicativo enviará cinco arquivos JavaScript e terá <script>
tags que os vincularão.
Questão
Como posso impedir que usuários e invasores espiem e editem meu código ?
Um exemplo seria:
Ctrl+ Shift+I
No Devtools , vá para Fontes , selecione um arquivo para editar (ou seja
index.html
) e escreva ediçõesPressionar Ctrl+ Sfará com que a edição ao vivo ocorra
Gostaria de impedir que o exemplo acima ocorra ... É possível?
Aqui está o que eu pensei:
Vou criar outro arquivo JavaScript do lado do cliente, prevent_keys.js
Ele ouvirá Ctrl+ Shift+ I.
Se retornar
true
(ou seja, as teclas foram pressionadas), serãolog
as teclas.
No entanto, isso não impedirá o usuário de usar o Devtools diretamente.
javascript
web-applications
html
node.js
client-side
Edwin Pratt
fonte
fonte
Respostas:
Você literalmente não pode impedir que os usuários acessem e modifiquem o conteúdo que você está enviando. Você não tem controle sobre o navegador, ou qual navegador ele usa, ou se, de fato, está baixando seu código-fonte por meio de um navegador. Você está executando seu código no dispositivo de outra pessoa. Você não deve e não pode assumir nada sobre a integridade deste dispositivo.
Se você possui um código que não deseja expor, não o envie ao navegador. Em vez disso, deixe o navegador enviar uma solicitação para um servidor onde você executa o código secreto.
Como um exemplo concreto, não verifique senhas no cliente. O cliente pode ser modificado para sempre informar ao servidor "a senha estava correta". Em vez disso, a autenticação deve ocorrer no servidor confiável.
fonte
Você não pode. Uma das regras fundamentais da computação: você não pode confiar no cliente . Qualquer que seja o esquema inteligente em que você pense, posso contorná-lo se estiver no controle do cliente.
fonte
Por que você não deseja que o código seja modificado?
Segurança? Confiar em? Segredo comercial?
Então não envie o código, peça ao cliente para enviar uma solicitação e retornar um resultado. Talvez não seja um resultado privado ou privilegiado, apenas uma conclusão é suficiente para muitas UIs.
Como versões ligeiramente modificadas do seu próprio código estão prejudicando seus resultados?
Use um obscurecedor de código, mangler de nome e segmentos de código triviais.
Essas técnicas elevam a fasquia no nível de habilidade real e nas ferramentas necessárias para criar uma pequena variação do seu site. Esteja ciente de que essas técnicas podem tornar seu código mais lento, introduzir bugs e mensagens de erro interessantes e sem sentido e ainda assim podem ser superadas por alguém com as ferramentas e / ou habilidades certas. Então, considere realmente se vale a pena. No final do dia, alguém poderia realmente escrever o mesmo código.
fonte