O tecnologia.com.pt mudou de visual. Envie-nos aqui a sua opinião, feedback ou sugestões.
Olá, efectue login com as suas credenciais do fórum ou registe-se aqui
Pesquise no fórum

Autor Tópico: [JS] Encriptar ficheiros JS  (Lida 1593 vezes)

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
[JS] Encriptar ficheiros JS
« em: Janeiro 18, 2011, 23:54:16 pm »
Boas como posso encriptar ficheiros javascript para visitantes não perceberem o meu codigo? Isto claro que depois possa usar sempre esses ficheiros quando quizer
« Última modificação: Janeiro 20, 2011, 00:11:39 am por ajpostiga »






Offline diogomota

  • Distinguished Member
  • *
  • Mensagens: 735
  • Sexo: Masculino
Re: Encriptar ficheiros JS
« Responder #1 em: Janeiro 19, 2011, 08:31:45 am »
webtools.live2support.com/misc_javascript_encrypter.php  isto?

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: Encriptar ficheiros JS
« Responder #2 em: Janeiro 19, 2011, 14:39:39 pm »
Não o que quero não é encriptar texto, mas sim todo o ficheiro javascript, de modo a quando alguém fizer download ou cuscar o código não perceber nada.






Offline diogomota

  • Distinguished Member
  • *
  • Mensagens: 735
  • Sexo: Masculino
Re: Encriptar ficheiros JS
« Responder #3 em: Janeiro 19, 2011, 15:23:44 pm »
entao uma coisa que deve funcionar bem e code obfuscation  tenta isto http://dean.edwards.name/packer/

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: Encriptar ficheiros JS
« Responder #4 em: Janeiro 19, 2011, 16:05:28 pm »
E depois como uso isso?






Offline diogomota

  • Distinguished Member
  • *
  • Mensagens: 735
  • Sexo: Masculino
Re: Encriptar ficheiros JS
« Responder #5 em: Janeiro 19, 2011, 17:23:53 pm »
copias o codigo do ficheiro JS a que queres faz isso colas e depois selecionas bas62 encode e shrink variables  apanhei aqui um ficheiro JS do forum o theme.js  ele fica assim :
Código: [Seleccione]
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('6 A(){2 a=3.j(\'W\');k(2 i=a.l-1;i>=0;i--){4(B&&a[i].o<C)a[i].5.m=(a[i].o+C)+\'D\';E 4(F&&(a[i].G>a[i].p||a[i].p==0))a[i].5.H=\'X\';E 4(\'q\'8 a[i]&&a[i].q.H==\'r\'&&(a[i].q.m==\'\'||a[i].q.m==\'r\')&&(a[i].G>a[i].p||a[i].p==0)&&(a[i].o!=0))a[i].5.m=(a[i].o+Y)+\'D\'}}4((Z&&!10)||B||F)I(A);6 J(){2 a=3.j(\'11\');k(n 8 a){4(a[n].7==12||a[n].7.K(\'13 14\')==-1)15;a[n].5.16=\'17\';a[n].18=6(){9.5.L=9.5.m=9.5.L==\'r\'?19:\'r\'}}}I(J);6 1a(a,b,c){2 d=3.1b(a);2 e=d.j(\'w\');4(e.l>0){2 f=e[e.l-1];f.7=f.7.x(/\\s*M/,\'1c\')}2 g=d.j(\'1d\')[0];2 h=3.1e(\'1f\');1g(h,\'<a 1h="\'+c.1i+\'" \'+(\'N\'8 c?c.N:\'\')+\'><w 1j="M"\'+(\'O\'8 c?\' 1k="\'+c.O+\'"\':\'\')+\'>\'+c.1l+\'</w></a>\');g.1m(h)}2 P=6(){2 a,1n;k(2 b=0;b<3.t.l;b++)k(2 c=0;c<3.t[b].Q.l;c++){u=3.t[b].Q[c];4(u.R.K(\'v:S\')!=-1){T=u.R.x(/v:S/1o,\'v.y\');3.t[b].1p(T,u.5.1q)}}2 d=3.j(\'v\');k(z 8 d){d[z].1r=6(){9.7+=\' y\'};d[z].1s=6(){9.7=9.7.x(1t 1u(\' y\\\\b\'),\'\')}}}4(1v&&\'U\'8 V)V.U(\'1w\',P);',62,95,'||var|document|if|style|function|className|in|this||||||||||getElementsByTagName|for|length|height|oImage|offsetHeight|clientWidth|currentStyle|auto||styleSheets|oCssRule|LI|span|replace|iehover|oListItem|smf_codeBoxFix|is_webkit|20|px|else|is_ff|scrollWidth|overflow|addLoadEvent|smc_toggleImageDimensions|indexOf|width|last|sCustom|sId|smf_addListItemHoverEvents|rules|selectorText|hover|sNewSelector|attachEvent|window|code|scroll|24|is_ie|is_ie4|IMG|undefined|bbc_img|resized|continue|cursor|pointer|onclick|null|smf_addButton|getElementById|position_holder|ul|createElement|li|setInnerHTML|href|sUrl|class|id|sText|appendChild|newSelector|gi|addRule|cssText|onmouseover|onmouseout|new|RegExp|is_ie7down|onload'.split('|'),0,{})) a mim parece-me bem confuso, eu nao o consigo ler..

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: Encriptar ficheiros JS
« Responder #6 em: Janeiro 19, 2011, 17:28:54 pm »
Sim mas a questão e depois para o meu codigo ler o ficheiro js XD






Offline tommy v.

  • Senior Member
  • *
  • Mensagens: 163
  • Sexo: Masculino
    • Exames código da estrada
Re: Encriptar ficheiros JS
« Responder #7 em: Janeiro 19, 2011, 17:47:14 pm »
Na obfuscation o código é exactamente o mesmo, a única coisa que a obfuscation faz é tornar o código mais complicado de ler directamente pelo ser humano.

Por exemplo recicla variáveis, transforma os ciclos for nos ciclos while, ou transforma em funções recursivas, as variáveis são as mais primitivas possíveis, por exemplo uma string passa a ser um array de chars etc..

E além disso altera os nomes da variáveis para nomes ridículos.

O código continua completamente funcional, talvez com uma performance mais baixa.

Offline diogomota

  • Distinguished Member
  • *
  • Mensagens: 735
  • Sexo: Masculino
Re: Encriptar ficheiros JS
« Responder #8 em: Janeiro 19, 2011, 18:03:50 pm »
nao precisas de alterar nada no codigo, o codigo funciona na mesma e codigo normal de JS  tal como o tommy v disse o browser consegue ler o ser humano e que nao.

Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: Encriptar ficheiros JS
« Responder #9 em: Janeiro 19, 2011, 23:14:06 pm »
E não consome mais largura de banda?






Offline Umbus

  • Eternal Poster
  • *
  • Mensagens: 4595
  • Sexo: Masculino
    • Email
Re: Encriptar ficheiros JS
« Responder #10 em: Janeiro 19, 2011, 23:37:18 pm »
Não sabem nenhum programa desses offline grátis?






Offline ajpostiga

  • Senior Member
  • *
  • Mensagens: 168
  • Sexo: Masculino
  • José Postiga .com Serviços de Desenvolvimento WEB
    • José Postiga .com
    • Email
Re: Encriptar ficheiros JS
« Responder #11 em: Janeiro 20, 2011, 00:10:08 am »
Esses ofuscadores são, na minha opinião, completamente desnecessários.

Talvez a protecção do ficheiro (ou ficheiros) por htaccess venha mais em conta. Vê se isto te ajuda: http://forums.devshed.com/security-and-cryptography-17/htaccess-code-to-password-protect-1-file-9519.html

EDIT: Umbus faltou-se a tag correspondente à linguagem. Tenho de criar um tópico com umas pequenas regras para tornar isto mais fácil de navegar.

Offline tommy v.

  • Senior Member
  • *
  • Mensagens: 163
  • Sexo: Masculino
    • Exames código da estrada
Re: [JS] Encriptar ficheiros JS
« Responder #12 em: Janeiro 20, 2011, 16:38:17 pm »
Mas o javascript corre do lado do cliente, o browser tem acesso ao código completo. E como não é uma linguagem que é compilada o código está completo para quem quiser copiar.

Não estou a ver como é que o proteges pelo htaccess.

Offline ajpostiga

  • Senior Member
  • *
  • Mensagens: 168
  • Sexo: Masculino
  • José Postiga .com Serviços de Desenvolvimento WEB
    • José Postiga .com
    • Email
Re: [JS] Encriptar ficheiros JS
« Responder #13 em: Janeiro 20, 2011, 18:20:22 pm »
Mas o javascript corre do lado do cliente, o browser tem acesso ao código completo. E como não é uma linguagem que é compilada o código está completo para quem quiser copiar.

Não estou a ver como é que o proteges pelo htaccess.

Chegaste a ver o link que coloquei no tópico?

Tu consegues fazer com que o servidor recuse o acesso a ficheiros a todos os pedidos exteriores (tal como a protecção hotlink, por exemplo). Neste caso o Umbus só quer negar o acesso pelo exterior, sendo só o servidor (localhost) onde está o site alojado a única máquina permitida a ligar-se a esse mesmo.

Isto sei que já vi isso num projecto que trabalhei.

Offline tommy v.

  • Senior Member
  • *
  • Mensagens: 163
  • Sexo: Masculino
    • Exames código da estrada
Re: [JS] Encriptar ficheiros JS
« Responder #14 em: Janeiro 20, 2011, 18:40:35 pm »
Pelo que eu percebi ele quer proteger o seu código javascript,para ninguém copiar o trabalho,

E como o js é executado localmente é sempre recebido integralmente pelo browser, basta visitar a página e ficas com acesso ao código, ou caso contrário não funciona.

Se bloqueias o acesso aos ficheiros as páginas que dependem dos ficheiros não funcionam.


Esse método do htaccess funciona para pedidos directos ao ficheiro.