Questi script hanno lo scopo di spiegare come nascondere l’HTML e/o lo javascript da altre persone che visualizzano il codice sorgente della tua pagina. Non è infallibile, ma rende più difficile da leggere e capire il codice sorgente. A causa della natura del funzionamento di questi script, la spiegazione può sembrare complicata, ma sii paziente: dovrebbe avere un senso una volta che si guadagna un po’ di esperienza con questi argomenti. In realtà non è necessario conoscere gli angoli ins-and-outs di questi script, ma aiuta a capire come e perché funzionano. Quindi, prendete una sedia e io farò del mio meglio per farlo sembrare il meno complicato possibile.
Escape/Unescape
escape
” su qualsiasi testo, HTML o Javascript per renderlo illeggibile in generale per l’utente comune. I codici URL di escape
hanno due caratteri con valori esadecimali (8-bit) preceduti da un segno %. Questo viene utilizzato principalmente negli URL del browser o per l’uso quando si creano dei cookie per i caratteri che altrimenti non funzionano, perché sono caratteri riservati (come gli spazi e simili).Ad esempio, se si ha il nome di un file HTML come “prima pagina”, il codice URL con
escape
assomiglierebbe a “prima%20pagina
“. Il 20% è il valore escape
per uno spazio. Normalmente, si dovrebbe fare escape
solo ai caratteri speciali (in genere qualsiasi carattere diverso da az, AZ e 0-9), ma lo script qui sotto fa l’escape
, in realtà, a tutto il testo semplicemente sostituendo tutti i caratteri con i loro equivalenti con l’escape
. Quindi, se si dovesse fare l’escape
completamente alle parole “prima pagina“, diventerebbe simile: %70%72%69%6D%61%20%70%61%67%69%6E%61
. Ora, nessuna parte del testo è facilmente decifrabile, anche se la maggior parte era composta da caratteri normali.Dal momento che il browser è in grado di gestire i codici di
escape
da sé, questo può essere usato abbastanza facilmente, senza dover aggiungere uno script in più per decifrarli. Quindi, se si desidera che il browser scriva quel testo con escape
nella pagina, si potrebbe fare qualcosa di simile:
<script language="javascript">
document.write(unescape('%70%72%69%6D%61%20%70%61%67%69%6E%61'));
</script>
escape
in una serie di citazioni (important!), avvolgendolo all’interno del metodo built-in unescape()
, e poi avvolgendo il tutto in un metodo document.write()
. Questo potrebbe sembrare un po’ inutile, ma si potrebbe nascondere un indirizzo e-mail per evitare che i crawler Web strappi il tuo indirizzo e-mail dalla tua pagina web da utilizzare per inviare in massa degli spam e-mailing, e consente ai visitatori di leggere bene.Ad esempio, il mio email completamente con
escape
sarebbe simile ad un crawler web:
<script language="javascript">
document.write( unescape('%70%6F%73%74%6D%61%73%74%65%72%40%72%68%61%64%72%69%78%2E%6E%65%74'));
</script>
postmaster@rhadrix.net
Le due seguenti textarea ci consente di fare pienamente l’
escape
e viceversa al testo desiderato. Basta digitare qualsiasi testo/HTML/JavaScript che si desidera nel riquadro di sinistra e fare clic sul pulsante -->
per ottimizzarne l’escape
. Allo stesso modo, fare clic sul pulsante <--
per riconvertirlo in testo normale, per verificare che è lo stesso dell’originale. È possibile copiare e incollare il codice con escape
nella tua pagina (non dimenticare di usarei metodi unescape()
e document.write()
).
Quando si fa’ l’
escape
ad un’intera pagina, ogni singolo carattere diventano tre caratteri. Ciò triplicherà le dimensioni della pagina. Non è un grosso problema se la pagina ha una dimensione di circa 1-5 KBytes; ma quando si la pagina abbastanza grande (> 10 KBytes), la dimensione del file aumenta rapidamente. Questo potrebbe rallentare il tempo di caricamento per le connessioni dial-up.Inoltre, se qualcuno dovesse guardare il vostro codice sorgente, sarebbe piuttosto facile capire cosa si sta facendo. Poi si può semplicemente copiare e incollare il codice e fare un piccolo script per visualizzare il contenuto normale. Non vi è alcun modo assoluto infallibile (client-side) per sventare qualcosa visualizzando il codice sorgente se sono abbastanza determinati, il meglio che puoi sperare di fare è di renderlo il più scomodo possibile.
Quindi, per soddisfare entrambi gli interessi si può codificare/decodificare il testo. Ancora una volta, non sarà infallibile impedire alla gente di rubare il contenuto di origine, se veramente lo vogliono. Utilizzando liberamente qui i termini “codifica” e “decodifica” con il seguente script non è considerato una codifica vera e propria, ma è più facile dirlo in questo modo. L’uscita codificata sarà un po’ più lunga del testo originale, ma molto meno che se avesse semplicemente fatto l’
escape
a tutto il testo.La sezione precedente, si è fatto l’
escape
solo al testo. La sezione seguente sposta effettivamente i valori Unicode in modo che il risultato sembri senza senso. Fate una prova e vedrete, non dimenticate di provare con diversi valori chiave di codice
dal menu a tendina.
-->
(codifica):
- In primo luogo, fa l’
escape
a tutto il testo. - Poi lo script trova i valori Unicode per ogni carattere della stringa.
- Poi lo script aggiunge, qualunque sia la
Chiave di codifica
dal menu a tendina, il valore della casella ad ogni carattere il suo valore Unicode. - Poi lo script deriva i caratteri in base ai valori Unicode spostati.
- Il valore della
Chiave di codifica
è anche incorporato nel testo decodificato in modo che lo script sa come decodificare correttamente la stringa di nuovo. - Infine, fa’ l’
escape
al risultato ancora una volta per rimuovere eventuali caratteri speciali. Ora, l’output è totalmente estraneo a chiunque rendendolo impossibile spostare i valori Unicode al volo.
La fase di decodifica <--
inverte semplicemente il processo.
Purtroppo, i browsers non hanno alcuna capacità built-in (funzione nativa) per gestire la decodifica, quindi dobbiamo utilizzare una funzione per questo. Dovete fare l'escape
alla funzione che gestisce la decodifica per nascondere questa parte, e dare al browser la capacità di scrivere il documento. Non abbiamo veramente bisogno di fare l'escape
alla funzione di decodifica, ma renderà molto più difficile per qualcuno di capire cosa sta succedendo. Quindi, la funzione di decodifica può essere utilizzata per decodificare il resto di qualsiasi contenuto ch'è stato codificato. I passaggi che seguono delineano one-by-one la procedura per avere meno confusione.
Fare l'escape
alla funzione di decodifica. Prima di fare l'escape
, questa appare così:
<script language="javascript">
function dF(s){
var t='';
var s1=unescape(s.substr(0,s.length-1));
for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));
document.write(unescape(t));
}
</script>
escape
, la funzione diventa simile a questo:
%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%0D%0A%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%7B%0D%0A%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%73%2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%76%61%72%20%74%3D%27%27%3B%0D%0A%66%6F%72%28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D%73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%0D%0A%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%0D%0A%7D%0D%0A%3C%2F%73%63%72%69%70%74%3E
Comunque, ora doveete fare che il browser scriva questa parte dello script alla pagina avvolgendolo con
document.write()
e usare il metodo unescape()
come segue:
<script language="javascript">
document.write(
unescape(
%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%0D%0A%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%7B%0D%0A%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%73%2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%76%61%72%20%74%3D%27%27%3B%0D%0A%66%6F%72%28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D%73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%0D%0A%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%0D%0A%7D%0D%0A%3C%2F%73%63%72%69%70%74%3E
)
)
</script>
<script language="javascript">
function preloadImages(){
var iA=new Array();
for(i=0;i<arguments.length;i++){
iA[i]=new Image();
iA[i].src=arguments[i];
}}
preloadImages('img1.gif','img2.gif','img3.gif');
</script>
%264Dtdsjqu%2631mbohvbhf%264E%2633kbwbtdsjqu%2633%264F%261Bgvodujpo%2631qsfmpbeJnbhft%2639%263%3A%268C%261Bwbs%2631jB%264Eofx%2631Bssbz%2639%263%3A%264C%261Bgps%2639j%264E1%264Cj%264Dbshvnfout/mfohui%264Cj%2C%2C%263%3A%268C%261BjB%266Cj%266E%264Eofx%2631Jnbhf%2639%263%3A%264C%261BjB%266Cj%266E/tsd%264Ebshvnfout%266Cj%266E%264C%261B%268E%268E%261B%261BqsfmpbeJnbhft%2639%2638jnh2/hjg%2638%263D%2638jnh3/hjg%2638%263D%2638jnh4/hjg%2638%263%3A%264C%261B%264D0tdsjqu%264F1
dF()
(che fa l'unescape
e lo scive sulla pagina nel passaggio precedente) in questo modo:
dF('%264Dtdsjqu%2631mbohvbhf%264E%2633kbwbtdsjqu%2633%264F%261E%261Bgvodujpo%2631qsfmpbeJnbhft%2639%263%3A%268C%261E%261Bwbs%2631jB%264Eofx%2631Bssbz%2639%263%3A%264C%261E%261Bgps%2639j%264E1%264Cj%264Dbshvnfout/mfohui%264Cj%2C%2C%263%3A%268C%261E%261BjB%266Cj%266E%264Eofx%2631Jnbhf%2639%263%3A%264C%261E%261BjB%266Cj%266E/tsd%264Ebshvnfout%266Cj%266E%264C%261E%261B%268E%268E%261E%261B%261E%261BqsfmpbeJnbhft%2639%2638jnh2/hjg%2638%263D%2638jnh3/hjg%2638%263D%2638jnh4/hjg%2638%263%3A%264C%261E%261B%264D0tdsjqu%264F1');
<script language="javascript">
document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%0D%0A%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%7B%0D%0A%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%73%2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B%20%76%61%72%20%74%3D%27%27%3B%0D%0A%66%6F%72%28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74%28%69%29%2D%73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%29%3B%0D%0A%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%74%29%29%3B%0D%0A%7D%0D%0A%3C%2F%73%63%72%69%70%74%3E'));
dF('%264Dtdsjqu%2631mbohvbhf%264E%2633kbwbtdsjqu%2633%264F%261E%261Bgvodujpo%2631qsfmpbeJnbhft%2639%263%3A%268C%261E%261Bwbs%2631jB%264Eofx%2631Bssbz%2639%263%3A%264C%261E%261Bgps%2639j%264E1%264Cj%264Dbshvnfout/mfohui%264Cj%2C%2C%263%3A%268C%261E%261BjB%266Cj%266E%264Eofx%2631Jnbhf%2639%263%3A%264C%261E%261BjB%266Cj%266E/tsd%264Ebshvnfout%266Cj%266E%264C%261E%261B%268E%268E%261E%261B%261E%261BqsfmpbeJnbhft%2639%2638jnh2/hjg%2638%263D%2638jnh3/hjg%2638%263D%2638jnh4/hjg%2638%263%3A%264C%261E%261B%264D0tdsjqu%264F1');
</script>
unescape
della funzione di decoder, e la parte che decodifica lo script per la precarica delle immagini sulla seguente linea. Si potrebbe semplicemente incollare l'intera sezione al di sopra nella pagina e lo script dovrebbe funzionare perfettamente. Sì, sembra confuso, ma questo è il punto non è vero? Oh, e una cosa di più: l'intera stringa dovrebbe apparire su una riga, non è possibile aggiungere interruzioni di riga forzate.La stessa cosa si fa se si vuole codificare una intera pagina HTML, tranne la parte codificata della stringa (linea 3) che potrebbe diventare enorme. La linea 2 non cambierebbe comunque
Ancora nessun commento