Nascondere il codice HTML, tutta la leggenda dalle origini ai giorni nostri
Da sempre in questo forum si è sempre parlato di NASCONDERE il codice sorgente di una pagina html, cioè il vero codice fatto di <html> (inteso come script e tag)
Molte discussioni si sono aperte al riguardo, ma alla fine il riscontro è sempre lo stesso:
E’ IMPOSSIBILE NASCONDERE IN CODICE SORGENTE HTML
Questo perché
1. Il codice viene eseguito sulla macchina dell’utente e non sul server dove risiedono le pagine del sito, quindi la pagina viene scaricata ogni volta (lasciando perdere il discorso cache) e interpretata dal browser, che non risiede (come tutti spero sappiano…) sul server, ma bensì sul computer di ognuno di noi.
2. Il codice molto spesso, anzi, direi è sempre visibile tramite mouse o tramite tastiera, anche se devo dire che non molti conoscono le combinazioni di tasti per visualizzare il codice; cmq di questo parleremo dopo
Per questa pillola i browser utilizzati sono:
Ie 6.0 (Internet Explorer, Microsoft)
NN 6.0 (Netscape Navigator, Sun)
Opera 6.0
Mozilla 0.9.6
Purtroppo non ho potuto cercare e scaricare altri browser, ma diciamo che è una buona copertura questa… cmq iniziamo.
DISABILITARE IL TASTO DESTRO DEL MOUSE
Quando sul forum arriva un utente e chiede come disabilitare (io dico cosi, magari il verbo è sbagliato ma ci si intende) il tasto destro del mouse, la risposta che spesso viene data è la seguente:
<body OnContextMenu=”return false;”>
Esito:
Ie: SI
Mozilla: Si
Opera: No
Netscape: No
Come vedete, l’esito non è molto gratificante… diciamo che 1 browser su 2 vede lo script… possiamo ovviare a questa situazione con una estensione dello script:
<SCRIPT LANGUAGE="JavaScript1.1">
function destro1(e) {
//Per NN dobbiamo usare WHICH
if (navigator.appName == 'Netscape' && (e.which > 1)){
return false;
}
{
return true;
}
}
function destro2(){
//Una funzioncina per IE e Mozilla
return false;
}
document.onmousedown=destro1;
document.onmouseup=destro1;
document.oncontextmenu = destro2;
</script>
Esito:
Ie: SI
Mozilla: Si
Opera: No
Netscape: Si
Mi sono sforzato di estendere il blocco del tasto destro ad OPERA, senza risultato. Chiunque conosca un modo per farlo su Opera può segnalarmelo. Cmq possiamo dire che tutto sommato abbiamo trovato un buon script, perché ha effetto sul 75 % dei browser provati (ma per un buon 85% degli utenti, perché quasi tutti utilizzano IE oppure NN, anche se c’è da dire che Opera sta prendendo piede ad una maniera impressionante.
La fregatura
Eccoci qui. Possiamo dire che questo script non serve esattamente ad un cavolo, perché usando le combinazioni di tasti proposte dai vari browser). Ebbene, quali sono questi magici tasti? Eccoveli:
Netscape = CTRL + U
Mozilla = CTRL + U
Opera = CTRL + F3
Ie = non ce lo ha (almeno… io nn lo ho trovato)
Molti utenti non conoscono queste combinazioni di tasti, e di conseguenza il blocco del tasto destro non è sempre inutile per lo scopo che vuoi raggiungere
DISABILITARE IL SALVATAGGIO DELLE PAGINE IN CACHE
La cache può essere generalmente definita come una cartella che salva tutti i files che noi vediamo su internet, immagini, html, css, javascript, ma non script PHP, ASP, CGI ecc.. (ti piacerebbe eh?), poiché questi ultimi vengono eseguiti sul server e poi mandati a noi sottoforma di HTML che il browser interpreta. Quindi un utente per avere la pagina che sta vedendo sullo schermo non deve far altro che andare nella cartella di CACHE (Win98: c:\windows\temporary internet files) e prendersi la pagina. Per evitare, o cercare per lo meno di evitare questo, ci tornano utili dei META TAG, eccoli:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
Indica al server di non mandare una copia di chache al browser. Questa è l'intestazione che anche i browser stessi mandano automaticamente al server quando si fa un refresh della pagina.
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
Questo parametro indica l'impostazione di caching dei dati in uscita, mandati da pagine asp (o php).
<META HTTP-EQUIV="Expires" CONTENT="-1">
Indipendentemente da come sono settate i precedenti parametri di caching, questa indica che la pagnia non deve essere messa in cache perchè dice al browser quando deve "scadere" (credo sia abbastanza impostare Expires=0).
ELIMINARE LA VOCE VISUALIZZA HTML
Per fare questo, purtroppo l’unico modo è quello di togliere completamente la menubar (per chi non sappia quale sia, è quella dove è presente FILE, MODIFICA, VISUALUZZA ecc..)
Non è possibile (grazie br1 che mi hai confermato quanto pensavo), togliere la barra in fase di caricamento della pagina nel browser. Dobbiamo necessariamente aprire una nuova finestra, quindi usare le famose popup (solitamente abbastanza antipatiche). Ecco uno script:
<script>
window.open('dennis.htm','Prova', width = '400, height= 400, status=yes, directories=yes, toolbar=yes, location=yes, menubar=no,scrollbars=yes, resizable=yes')
</script>
Esito:
Ie: SI
Mozilla: Si
Opera: No
Netscape: Si
La popup si apre senza menubar su tutti i browser, a parte su Opera, dove la barra resta. Cmq, visto che ognuno dei browser fa un po' quello che vuole, cerchiamo di far apparire all’utente la popup grande come una finestra normale (per la verità è di qualche px più piccola):
<script>
window.moveTo(0,0);
window.resizeTo(screen.Width,screen.Height);
</script>
Esito:
Ie: SI
Mozilla: Si (un po' come vuole)
Opera: Si (un po' come vuole, ma sempre con la menubar)
Netscape: Si (un po' come vuole)
Un altro trucco usato per nascondere (uso questo verbo, ma non è il più appropriato) il codice sorgente è lo spostamento di questo codice.
Niente di complicato, semplicemente, dopo aver creato la pagina, la apriamo con un editor di testo (Notepad), mettiamo il cursore all’inizio (prima di <html>) e inziamo a dare invii (enter, 32), diamone un ben po’, cosicché anche chi ha una risoluzione alta non veda il codice.
Per prima cosa, la pagina si appesantisce, ma a parte questo, mi sembra ovvio che per aggirare questo trucchetto basta usare le barre di scorrimento, ma molti non ci pensano.
Ennesimo trucchetto per nascondere il codice, sempre ai meno esperti, e anche ai medio-bassi esperti, è quello di usare l’ UNESCAPE. Esistono vari programmino per fare questa sottospecie di criptazione, io ho usato quella del mio amico mr_chiocco, un programma in Visual Basic, prego MR_CHIOCCO di postare il link per lo scaricamento del programma.
Eccovi un esempio:
Originale
<html>
<head>
<title>UNESCAPE</title>
</head>
<body>
ECCO UN TESTO…</p>
</body>
Trasformato
<html><head>
<SCRIPT LANGUAGE = "Javascript">
<!--
var Words = "%3C%68%74%6D%6C%3E%0D%0A%3C%68%65%61%64%3E%0D%0A% 3C%74%69%74%6C%65%3E%55%4E%45%53%43%41%50%45%3C%2F %74%69%74%6C%65%3E%0D%0A%3C%2F%68%65%61%64%3E%0D%0 A%3C%62%6F%64%79%3E%0D%0A%3C%70%3E%45%43%43%4F%20% 55%4E%20%54%45%53%54%4F%85%3C%2F%70%3E%0D%0A%3C%2F %62%6F%64%79%3E%0D%0A"
function SetNewWords()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
SetNewWords();
// -->
</SCRIPT>
</head><body></body></html>
Lascio a voi intendere come bypassare questo trucchetto, anche se sul forum è stato gia incontrato… (e notate anche come il codice è più lungo, quindi anche i bytes da scaricare, quindi anche il peso della pagina)
Un altro trucco, che ancora oggi offre delle perpressità, è quello della CRIPTAZIONE lato client.
Esistono vari algoritmi per la criptazione, anche molto efficaci, ma non per questo irrisolvibili. Chi conosce bene javascript, vede spesso in queste criptazioni una vera e propria sfida, che molto spesso viene vinta.
Riassumendo questa specie di pillola, IL CODICE HTML NON SI PUO NASCONDERE.
Tuttavia… se un cliente non vuole che il codice venga letto con facilità, o hai una mentalità altamente CLOSED SOURCE, elenchiamo tutto ciò che puoi fare per rendere la vita difficile a chi vuole vedere il codice:
1.1 Disabilitazione del tasto destro, il mio consiglio è di non mettere messaggi di ALERT, se devi farlo, fallo senza messaggi perché sono altamente antipatici, mentre un semplice return false, più di tanto non da nell’occhio
1.2 Disabilitazione del salvataggio in cache
1.3 Aprire il sito in una pagina senza la barra dei menu
1.4 Usare il metodo di UNESCAPE, o un altro tipo di Criptazione, attenzione che la pagina peserà troppo (l’etica dice: [Peso pagina > 32 kb] = ERRORE )
2.1 Criptare il codice html è di granlunga la soluzione più efficace, perché necessita di conoscenze che non tutti hanno. Cmq un contro di questa soluzione è il peso della pagina.
Scopo della pillola: Lo scopo della pillola non è ASSOLUTAMENTE quello di sostenere che il codice sorgente può essere nascosto. Lo scopo è stato quello di riassumere un po' tutto quello che è stato detto sull’argomento (che devo dire è stato un lavoro molto interessante) fino ad oggi (13 Nov. 2002), per convincere chi vuole nascondere il codice che non è possibile ma che esistono metodi alternativi, così possiamo rimandare qui chi sostiene che il codice è nascondibile. Spero riusciate a comprendere il motivo per cui ho fatto questo riassunto.
Grazie ragazzi (oro, blak, br1, longu, bobo, mackey, phantom, saintex, Reale, standard e tutti gli altri ovviamente[se gli elenco tutti sto fino domani]) spero di ricevere molti commenti, positivi, negativi, integranti ecc…
Bye
DENNIS (W OPEN SOURCE, non nascondiamo il nostro lavoro!)