Esiste un modo per nascondere o crittografare il codice JavaScript per impedire agli utenti di visualizzare, copiare e/o modificare i programmi proprietari?Come posso nascondere o crittografare il codice JavaScript?
risposta
Puoi offuscarlo, ma non c'è modo di proteggerlo completamente.
esempio obfuscator: http://www.javascriptobfuscator.com/Default.aspx
No, non è possibile. Se viene eseguito sul browser client, deve essere scaricato dal browser client. È piuttosto banale usare Fiddler per ispezionare la sessione HTTP e ottenere tutti i file js scaricati.
Ci sono trucchi che è possibile utilizzare. Uno dei più ovvi è quello di impiegare un objuger javascript.
Quindi, di nuovo, l'offuscamento impedisce solo il furto casuale e non impedisce alle persone di sollevare e utilizzare il codice.
È possibile provare lo script di azione compilato sotto forma di filmato flash.
Uno dei migliori compressori (non specificamente un offuscatore) è lo YUI Compressor.
L'unico modo sicuro per proteggere il codice non è quello di darlo via. Con la distribuzione client, non è possibile evitare che il client abbia accesso al codice.
Quindi la risposta breve è: non è possibile farlo
La risposta è più considerato Flash o Silverlight. Sebbene io creda che Silverlight darà volentieri i suoi segreti con il riflettore che gira sul client.
Non sono sicuro che esista qualcosa di simile con la piattaforma flash.
JavaScript è un linguaggio di scripting e pertanto rimane in forma leggibile dall'uomo finché non è giunto il momento di essere interpretato ed eseguito dal runtime JavaScript.
L'unico modo per nascondere parzialmente, almeno dalla mente meno tecniche, è per nascondere.
L'offuscamento rende più difficile per gli umani leggerlo, ma non impossibile per il tecnico esperto.
Se hai qualcosa in particolare che si desidera nascondere (come un algoritmo proprietario), che mettere sul server, o metterlo in un filmato Flash e chiamarlo con JavaScript. La scrittura di ActionScript è molto simile alla scrittura di JavaScript e puoi comunicare tra JavaScript e ActionScript. Puoi fare lo stesso con Silverlight, ma Silverlight non ha la penetrazione di Flash.
Tuttavia, ricorda che il telefono cellulare in grado di eseguire il JavaScript, ma non Silverlight o Flash, in modo che stai paralizzando gli utenti di telefonia mobile se si va con Flash o Silverlight.
Mentre tutti concordano sul fatto che la crittografia Javascript è un bad idea, ci sono alcuni piccoli casi d'uso in cui rallentare l'attacco è meglio di niente. Puoi iniziare con YUI Compressor (come @Ben Alpert) detto, o JSMin, Uglify o molti altri.
Tuttavia, il caso principale in cui voglio davvero "nascondere le cose" è quando sto pubblicando un indirizzo email. Nota, c'è il problema di Chrome quando fai clic su 'inspect element'. Mostrerà il tuo codice originale: ogni volta.Questo è il motivo per cui l'offuscamento è generalmente considerato come un modo migliore per andare.
Su quella nota, prendo un attacco a due punte, puramente per rallentare i bot spam. I Obfuscate/minify il js e poi lo eseguo di nuovo attraverso un codificatore (anche in questo caso, questo secondo passaggio è completamente inutile in chrome).
Sebbene non sia esattamente un codificatore JavaScript puro, il miglior codificatore html che ho trovato è http://hivelogic.com/enkoder/. Sarà trasformare questo:
<script type="text/javascript">
//<![CDATA[
<!--
var c=function(e) { var m="mail" + "to:webmaster";var a="somedomain"; e.href = m+"@"+a+".com";
};
//-->
//]]>
</script>
<a href="#" onclick="return c(this);"><img src="images/email.png" /></a>
in questo:
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=50){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")87,\\\"meozp?410\\\\=220\\\\s-dvwggd130\\\\#-2o,V_PY420" +
"\\\\I\\\\\\\\_V[\\\\\\\\620\\\\o710\\\\RB\\\\\\\\610\\\\JAB620\\\\720\\\\n\\"+
"\\{530\\\\410\\\\WJJU010\\\\|>snnn|j5J(771\\\\p{}saa-.W)+T:``vk\\\"\\\\`<02" +
"0\\\\!610\\\\'Dr\\\\010\\\\630\\\\400\\\\620\\\\700\\\\\\\\\\\\N730\\\\,530" +
"\\\\2S16EF600\\\\;420\\\\9ZNONO1200\\\\/000\\\\`'7400\\\\%n\\\\!010\\\\hpr\\"+
"\\= -cn720\\\\a(ce230\\\\500\\\\f730\\\\i,`200\\\\630\\\\[YIR720\\\\]720\\\\"+
"r\\\\720\\\\h][P]@JHADY310\\\\t230\\\\G500\\\\VBT230\\\\200\\\\Clxhh{tzra/{" +
"g0M0$./Pgche%Z8i#p`v^600\\\\\\\\\\\\R730\\\\Q620\\\\030\\\\730\\\\100\\\\72" +
"0\\\\530\\\\700\\\\720\\\\M410\\\\N730\\\\r\\\\530\\\\400\\\\4420\\\\8OM771" +
"\\\\`4400\\\\$010\\\\t\\\\120\\\\230\\\\r\\\\610\\\\310\\\\530\\\\e~o120\\\\"+
"RfJjn\\\\020\\\\lZ\\\\\\\\CZEWCV771\\\\v5lnqf2R1ox771\\\\p\\\"\\\\tr\\\\220" +
"\\\\310\\\\420\\\\600\\\\OSG300\\\\700\\\\410\\\\320\\\\410\\\\120\\\\620\\" +
"\\q)5<: 0>+\\\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;" +
"721=%y;++y)87<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noit" +
"cnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
Forse è sufficiente per rallentare alcuni bots spam. Non ho mai ricevuto spam usando questo (! Ancora).
So che questo è un thread vecchio, ma vorrei solo aggiungere un metodo per nascondere gli script, anche solo per renderlo un po 'più difficile da visualizzare. La chiave è usare AJAX e farlo funzionare in totale sincronia con gli script sul lato server come Php. In questo modo, l'intero algoritmo non è completamente esposto e sarebbe totalmente privo di significato per chiunque voglia rubare i tuoi codici. Ovviamente non è una soluzione infallibile al 100%, dal momento che i tuoi script sul lato client potrebbero essere ancora esposti se si colpisce F12 in chrome, ad esempio. Inoltre, se i tuoi script java si affidano a un sacco di processi sul lato server, in primo luogo non ci sarebbe assolutamente bisogno di preoccuparsi.
In questo script, i veri contenuti - i vostri script lato client effettivi - vengono recuperati solo attraverso il metodo get (ps: è ancora possibile vedere i contenuti seguendo l'url - al fine di evitare che, utilizzare il metodo post):
<?Php
//THE FOLLOWING VARIABLE IS ADDED TO ENABLE TOGGLING OF THIS FUNCTIONALITY:
$obscureScripts = TRUE;
//IF OBSCURE SCRIPT FUNCTIONALITY IS ALLOWED,
//THE SYSTEM SHOULD ONLY ALLOW REQUESTS TRIGGERED BY SPECIFIED GET METHOD
//OTHER THAN THAT, OR UNLESS $_GET['fetch'] == 'content', PERFORM THE FOLLOWING SCRIPTS:
if ($obscureScripts && !(isset($_GET['fetch']) && $_GET['fetch'] == 'content'))
{ //OPEN A SESSION
session_start();
//CREATE AN INDICATOR THAT THIS METHOD HAS BEEN USED
$_SESSION['obscr'] = 'set';
//CLOSE SESSION WRITER
session_write_close();
//ECHO THE FAKE CONTENTS OF YOUR PAGE
echo "<script type='text/javascript' src='plugins/jquery-1.9.0.min.js'></script> \n".
"<script> \n".
"$.get \n".
"( '?fetch=content', \n".
" function(data) \n".
" { $('body').fadeOut \n".
" ( function() \n".
" { $(this).empty().html(data).fadeIn(100); \n".
" } \n".
" ); \n".
" } \n".
"); \n".
"</script> \n".
"<html><head><title>Page Front</title><link rel='icon' href='icon.ico'/></head> \n".
"<body bgcolor='#121212'><center>Loading...</center></body></html> \n";
//THE FAKE CONTENTS WOULD IN TURN RUN A JQUERY SCRIPT TO RETRIEVE THE ACTUAL PAGE CONTENT
//DO NOT RUN THE REST OF THE SCRIPT/PAGE
exit();
}
//IF OBSCURE SCRIPT FUNCTIONALITY IS ON, AND IF A FETCH REQUEST WAS MADE,
//PERFORM THE FOLLOWING VALIDATION
else if ($obscureScripts && isset($_GET['fetch']) && $_GET['fetch'] == 'content')
{ //ATTEMPT TO RETRIEVE EXISTING SESSION
session_start();
//CHECK IF A SESSION WAS SET: THIS IS TO INDICATE THE LOADING OF FAKE CONTENTS AND THAT
//THE REAL CONTENTS ARE ONLY LOADED ONCE - BY THE JQUERY SCRIPTS PREVIOUSLY LOADED
if (isset($_SESSION['obscr']) && $_SESSION['obscr'] == 'set')
{ //ONCE CONFIRMED, UNSET THE SESSION TO PREVENT ANOTHER REQUEST
unset($_SESSION['obscr']);
//IF THE SESSION BECAME EMPTY AFTER UNSETTING THE 'obscr' SESSION VARIABLE,
//DELETE THE SESSION
if (empty($_SESSION))
{ session_unset();
session_destroy();
}
//CLOSE THE SESSION WRITER AND PROCEED TO THE REST OF THE CONTENTS
session_write_close();
//NOTICE THAT THERE'S NOT exit() OR die() REQUEST HERE.
//THIS MEANS THAT THE SCRIPT WOULD PROCEED TO THE CONTENTS
}
//IF NO SESSION IS SET, THIS MEANS THAT THE GET METHOD IS PROBABLY BEING REQUESTED
//FOR THE SECOND TIME; PROBABLY NOT BY THE PRE-LOADED SCRIPTS
//IF SO, PERFORM THE FOLLOWING:
else
{ //CLOSE THE SESSION WRITER
session_write_close();
//RELOAD THE PAGE BY REDIRECTING TO SELF
header('Location: '.$_SERVER['PHP_SELF']);
//PREVENT SHOWING ANYTHING AFTER THIS CODE
exit();
}
}
?>
<html>
<head><title>The content you want to hide</title></head>
<body>Your precious content.</body>
</html>
Ancora, questo non è un metodo infallibile. Chiunque può superare totalmente lo script precaricato, purché inneschi un metodo get prima di esso. Ho usato sessioni PHP per limitare l'accesso; che può ancora essere migliorato.
Onestamente, questo è solo un ulteriore carico di processo. Ma questo non impedisce a nessuno di provarci, giusto?
PS: Perdonami se i miei codici e l'uso delle terminologie sono un po 'rudimentali. Ho fatto Php per un anno solo al momento della scrittura. Metodo
Messaggio:
<?Php
//THE FOLLOWING VARIABLE IS ADDED TO ENABLE TOGGLING OF THIS FUNCTIONALITY:
$obscureScripts = TRUE;
//IF OBSCURE SCRIPT FUNCTIONALITY IS ALLOWED,
//THE SYSTEM SHOULD ONLY ALLOW REQUESTS TRIGGERED BY SPECIFIED GET METHOD
//OTHER THAN THAT, OR UNLESS $_GET['fetch'] == 'content', PERFORM THE FOLLOWING SCRIPTS:
if ($obscureScripts && !(isset($_POST['fetch']) && $_POST['fetch'] == 'content'))
{ //OPEN A SESSION
session_start();
//CREATE AN INDICATOR THAT THIS METHOD HAS BEEN USED
$_SESSION['obscr'] = 'set';
//CLOSE SESSION WRITER
session_write_close();
//ECHO THE FAKE CONTENTS OF YOUR PAGE
echo // USING HEREDOC THIS TIME
<<<SCRIPT
<script type='text/javascript' src='plugins/jquery-1.9.0.min.js'></script>
<script>
\$.post
( "{$_SERVER['PHP_SELF']}",
{ fetch:"content"
}
).done
( function(data)
{ \$("body").empty().html(data);
}
);
</script>
<html>
<head>
<title>Page Front</title>
</head>
<body>
<center>Loading...</center>
</body>
</html>
SCRIPT;
//THE FAKE CONTENTS WOULD IN TURN RUN A JQUERY SCRIPT TO RETRIEVE THE ACTUAL PAGE CONTENT
//DO NOT RUN THE REST OF THE SCRIPT/PAGE
exit();
}
//IF OBSCURE SCRIPT FUNCTIONALITY IS ON, AND IF A FETCH REQUEST WAS MADE,
//PERFORM THE FOLLOWING VALIDATION
else if ($obscureScripts && isset($_POST['fetch']) && $_POST['fetch'] == 'content')
{ //ATTEMPT TO RETRIEVE EXISTING SESSION
session_start();
//CHECK IF A SESSION WAS SET: THIS IS TO INDICATE THE LOADING OF FAKE CONTENTS AND THAT
//THE REAL CONTENTS ARE ONLY LOADED ONCE - BY THE JQUERY SCRIPTS PREVIOUSLY LOADED
if (isset($_SESSION['obscr']) && $_SESSION['obscr'] == 'set')
{ //ONCE CONFIRMED, UNSET THE SESSION TO PREVENT ANOTHER REQUEST
unset($_SESSION['obscr']);
//IF THE SESSION BECAME EMPTY AFTER UNSETTING THE 'obscr' SESSION VARIABLE,
//DELETE THE SESSION
if (empty($_SESSION))
{ session_unset();
session_destroy();
}
//CLOSE THE SESSION WRITER AND PROCEED TO THE REST OF THE CONTENTS
session_write_close();
//NOTICE THAT THERE'S NOT exit() OR die() REQUEST HERE.
//THIS MEANS THAT THE SCRIPT WOULD PROCEED TO THE CONTENTS
}
//IF NO SESSION IS SET, THIS MEANS THAT THE GET METHOD IS PROBABLY BEING REQUESTED
//FOR THE SECOND TIME; PROBABLY NOT BY THE PRE-LOADED SCRIPTS
//IF SO, PERFORM THE FOLLOWING:
else
{ //CLOSE THE SESSION WRITER
session_write_close();
//RELOAD THE PAGE BY REDIRECTING TO SELF
header('Location: '.$_SERVER['PHP_SELF']);
//PREVENT SHOWING ANYTHING AFTER THIS CODE
exit();
}
}
?>
<html>
<head><title>The content you want to hide</title></head>
<body>Your precious content.</body>
</html>
- 1. come nascondere codice javascript
- 2. Come posso crittografare 128 CFB in Ruby?
- 3. Come nascondere un NSToolbarItem utilizzando il codice?
- 4. Come posso crittografare o nascondere le password in uno script Perl utilizzato per connettersi al database mysql
- 5. È possibile nascondere o scramble/offuscare il codice javascript di una pagina Web?
- 6. Come posso crittografare la password in log4j.properties?
- 7. Heroku - Come crittografare il database
- 8. Nascondere ASPxPopupControl dal codice dietro
- 9. È possibile nascondere/codificare/crittografare il codice sorgente php e consentire ad altri di avere il sistema?
- 10. Come posso nascondere la barra di stato nel codice vs?
- 11. Posso crittografare la password del database SQLite?
- 12. Nascondere dati in Javascript
- 13. Come crittografare il token di sicurezza JWT?
- 14. Come posso nascondere un tag TD utilizzando JavaScript o CSS in linea?
- 15. Come posso evitare il furto del codice javascript?
- 16. Come posso inserire il codice JavaScript in un documento PDF?
- 17. Come crittografare la password
- 18. Come crittografare il database MySQL esistente?
- 19. Come posso determinare quale motore javascript, rhino o nashorn sta eseguendo il mio codice?
- 20. Come nascondere il codice non inserito in git?
- 21. Come posso offuscare o rendere illeggibili i miei file JavaScript?
- 22. Come evitare il codice spaghetti in Javascript
- 23. Come posso rilevare il browser con PHP o JavaScript?
- 24. Come posso nascondere il codice di traccia in Visual Studio IDE C#?
- 25. Dove mettere tutto il codice JavaScript jQuery?
- 26. Come posso nascondere la chiave API di Google Maps quando condivido il mio codice su github?
- 27. Come posso "nascondere" un UIRefreshControl?
- 28. come nascondere o proteggere il token nel passaggio da javascript per API Web 2
- 29. Nascondere un pulsante in Javascript
- 30. Come disabilitare o nascondere completamente il pulsante Indietro in QWizard?
Prova questo link: http://stackoverflow.com/questions/6869312/how-do-i-hide-javascript-code-in-a-webpage/13262948 # 13262948 -Jepp – Jepp