Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Segurança e criptografia

Atualmente trabalho como front, e venho a um tempo estudando Node. E duas coisas que sempre me despertaram interesse são segurança e performance, conversando com um back (.Net) lá da empresa onde trabalho sobre linguagens de programação e segurança, em uma tentativa do mesmo de me convencer que C# é "melhor" foi levantado o seguinte ponto: ao trabalhar com linguagens compiladas como C#, mesmo que o servidor onde a aplicação está seja invadido o código fonte continua seguro uma vez que só estão no servidor as DLLs, que segundo ele não tem como serem "revertidas", o que não é o caso de linguagens interpretadas como js ou python, e nesse mesmo cenário os fones ficaram expostos. Gostaria de saber o quanto essas afirmações são válidas, e o que pode ser feito em relação a segurança em node e programação de uma forma um pouco mais geral.

1 resposta
solução!

Fala ai Victor, tudo bem? Quanto ao C# não sei opinar, mas, em aplicações Java por exemplo.

Nós geramos um .jar ou .war final da aplicação e ambos são passíveis de engenharia reversa.

Eu mesmo já peguei um .war e voltei para os códigos Java.

Sobre o Node, sim, o que diz tem razão em partes.

Geralmente quando vamos publicar um projeto em Node é feito N técnicas para que tenhamos o código mais enxuto possível.

Dessa maneira, o código final será muito complexo de se ler.

Algo do tipo:

"use strict";var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(n,t){return n(t={exports:{}},t.exports),t.exports}var lodash=createCommonjsModule(function(F,N){(function(){var ro,eo="Expected a function",uo="__lodash_hash_undefined__",io="__lodash_placeholder__",oo=16,fo=32,ao=64,co=128,lo=256,so=1/0,ho=9007199254740991,po=NaN,vo=4294967295,_o=[["ary",co],["bind",1],["bindKey",2],["curry",8],["curryRight",oo],["flip",512],["partial",fo],["partialRight",ao],["rearg",lo]],go="[object Arguments]",yo="[object Array]",bo="[object Boolean]",wo="[object Date]",mo="[object Error]",xo="[object Function]",jo="[object GeneratorFunction]",Ao="[object Map]",ko="[object Number]",Oo="[object Object]",Io="[object Promise]",Ro="[object RegExp]",zo="[object Set]",Eo="[object String]",So="[object Symbol]",Co="[object WeakMap]",Wo="[object ArrayBuffer]",Lo="[object DataView]",To="[object Float32Array]",Uo="[object Float64Array]",Bo="[object Int8Array]",$o="[object Int16Array]",Do="[object Int32Array]",Mo="[object Uint8Array]",Fo="[object Uint8ClampedArray]",No="[object Uint16Array]",Po="[object Uint32Array]",qo=/\b__p \+= '';/g,Go=/\b(__p \+=) '' \+/g,Zo=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ko=/&(?:amp|lt|gt|quot|#39);/g,Vo=/[&<>"']/g,Ho=RegExp(Ko.source),Jo=RegExp(Vo.source),Yo=/<%-([\s\S]+?)%>/g,Qo=/<%([\s\S]+?)%>/g,Xo=/<%=([\s\S]+?)%>/g,nf=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tf=/^\w*$/,rf=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ef=/[\\^$.*+?()[\]

Isso é um pequeno trecho de código de um bundle final.

Outro detalhe: Se o hacker conseguiu chegar no seu servidor e passou por todo processo de segurança, ai não tem o que fazer, a culpa não é da linguagem.

Espero ter ajudado.