PDA

Visualizza la versione completa : DennisPillola n°2 - Gestione codice sorgente


Dennis
13-11-2002, 19:27
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%3 C%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%0A %3C%62%6F%64%79%3E%0D%0A%3C%70%3E%45%43%43%4F%20%5 5%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!)

standard
13-11-2002, 20:07
Bravo!
bisognerebbe reindirizzare tutti gli utenti del forum che fanno questa domanda a questo 3d!

Aggiungo un metodo semplice e carino per confondere chi cerca il codice: quello di lasciare dello spazio vuoto all'inizio del codice, in modo che chi va a cercare (se non scrolla la pagina) non trova niente.
Lo so è stupido, ma tanto quanto cercare di nascondere a tutti i costi il codice, lo visto in giro, e fa il suo compito, per capirci qualcosa come:




































<html>
<head>ecc..
capito no?

ciao e ancora: bravo!

Dennis
13-11-2002, 20:16
dal testo della pillola....


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


grazie standard... :tongue:

Dennis
13-11-2002, 20:17
cmq se avete qualcosa da obiettare... avanti!

blakwolf
13-11-2002, 20:53
HOOOOOOOOO FINALMENTE QUALCUNO L'HA DETTO :D

volevo aggiungere che vi sono metodi ancora + avanzati di criptatura come per esempio quello di sfruttare le applet di java x visualizzare l'html stesso, il problema viene dal peso mostruoso

inoltre ho incontrato degli activeX che su certe combinazioni browser/os permettono di disabilitare anche dai menu l'attivazione di certe voci come visualizza/html, ma non funzionavano molto

poi consideriamo il fatto che il normale html e il css è quasi inutile nasconderlo visto che un qualsiasi esperto di html capisce la struttura semplicemente guardando la pagina

inoltre c'è chi si ostina a criptare il codice in js per proteggere proprio i js... ma... sorpresa... spesso il codice js criptato in js non viene più eseguito quindi è inutile :gren:

ultima cosa, il web è nato open source in tutte le sue forme, e con il passare del tempo si è vista la debolezza dei linguaggi proprietari...

quindi...

Se qualcuno avesse criptato all'inizio il codice ho l'avesse fatto pagare oggi non avreste il web

OPEN SOURCE FOREVER :metallica

Robycz
13-11-2002, 22:02
OPEN SOURCE YES YES YESSSSSS!
:mavieni: :mavieni: :mavieni:

P.S: Che gran fastidio mi da' chi cerca a tutti i costi di proteggere il codice.... L'ultima volta che ho beccato una pagina con tentativo di protezione... ho inviato il codice al suo webmaster! :gren: :gren: :gren:

_________________

EBBRAVO DENNIS!

armageddon99
14-11-2002, 01:12
Complimenti Dennis per l'impegno profuso nel dare organicità ad un tema molto caro ai frequentatori del Forum...

Mi permetto solo di precisare alcuni punti:


>>E’ IMPOSSIBILE NASCONDERE IN CODICE SORGENTE HTML

occorre chiarire che in realtà WinIE5+ permette a tutti gli effetti di criptare il codice javascript/HTML tramite la ben nota utility Windows Script Encode.
A differenza degli algoritmi in puro javascript (come l'unescape citato) che hanno l'algoritmo in chiaro e sono decifrabili semplicemente sostituendo la document.write() con un alert() rendendo vano tutto l'algoritmo, il sistema Microsoft è a tutti gli effetti un sistema di crittatura del codice (sebbene violabile da un utente sufficientemente evoluto).

Il limite del sistema consiste nell'escludere a priori ogni browser che non sia WinIE5+ dalla fruizione dei contenuti. Tale forte limitazione può renderlo appetibile solo a webmaster dilettanti che non si pongono il problema della compatibilità crossbrowser o per applicazioni Intranet speciali.

Questo è un esempio classico:
http://digilander.libero.it/armageddon99/protected/protected2.htm



>>DISABILITARE IL SALVATAGGIO DELLE PAGINE IN CACHE

b) purtroppo (o per fortuna..) i META indicati non impediscono al browser di salvare una copia in cache di ogni singolo oggetto scaricato. Dunque in cache è SEMPRE presente qualunque elemento che venga scaricato da un webserver o da pagine locali.
Un link utile:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;234067



>>ELIMINARE LA VOCE VISUALIZZA HTML
>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).

Vero. L'apertura diretta da link di una pagina non può aversi senza titlebar e menubar, però esistono modi che emulano abbastanza efficacemente il comportamento atteso, almeno per WinIE5.x.
Questi sono esempi già postati:

http://digilander.libero.it/armageddon99/smartchrome/smartchrome.htm
http://digilander.libero.it/armageddon99/channelmode/loader.htm


Per finire, tra i vari escamotage 'foolproof' visti in giro vi è anche il sistema per proteggere le immagini (senza disabilitare il tasto destro) consistente nel coprirle con un layer contenente una gif trasparente, una specie di teca virtuale....

p.s.: forse un titolo tipo 'Nascondere il codice sorgente' può essere più esplicativo ed immediato per capire di cosa tratta il thread.
bye
armaged

MDM
14-11-2002, 09:18
Bella pillola, utile per convincere gli anti free-source che la loro politica vale poco. :D

Aggiungerei un paio di note:
- per poter vedere il codice da interne explorer è sufficiente aprire il menù popup con l'apposito tasto da tastiera (oppure SHIFT+F10) e scegliere la voce HTML
- da IE anche se la finestra correntemente aperta è priva delle barre basta premere CTRL+N per aprire una nuova finestra con lo stesso contenuto e anche le barre

:ciauz:

Dennis
14-11-2002, 12:05
Grazie a tutti per le risposte che avete dato.
è vero, esistono metodi alternativi per cercare per lo meno di mascherare il codice sorgente. Ma, non avendo materiale a disposizione, ho preferito non parlarne. Qualcuno parlava di metodi alternativi di criptazione, io ho detto che si può criptae il codice con un miliardo di algoritmi diversi, ma non sono esperto in materia. Cmq lo scopo di questa "pillola" è quello di indirizzare tutti coloro che chiedono di nascondere il codice html a questo 3d, quindi, più verrà integrato, meglio sarà per tutti. poi magari alla fine scriviamo una pillola finale.

ciao!

Joker197cinque
15-11-2002, 17:56
Questo è un esempio classico:
http://digilander.libero.it/armageddon99/protected/protected2.htm


<script language=jscript src=crypted.js></script>
<script language=jscript src=codicechrome.js></script>
<script language=jscript src=imageswap.js></script>
<script language=jscript src=chromeless.js></script>
<script language=jscript src=forumdisplay.php></script>

<script language=javascript>
document.write(String.fromCharCode(60,84,65,66,76, 69,32,65,76,73,71,78,61,34,99,101,110,116,101,114, 34,32,66,79,82,68,69,82,6

1,52,32,87,73,68,84,72,61,53,48,37,32,67,69,76,76, 83,80,65,67,73,78,71,61,48,32,67,69,76,76,80,65,68 ,68,73,78,71,61,51,48,62,60,

84,82,62,60,84,68,32,66,71,67,79,76,79,82,61,34,35 ,48,48,67,67,54,54,34,62,60,102,111,110,116,32,102 ,97,99,101,61,34,118,101,

114,100,97,110,97,34,32,115,105,122,101,61,50,62,7 3,108,32,115,111,114,103,101,110,116,101,32,100,10 5,32,113,117,101,115,1

16,111,32,102,105,108,101,32,72,84,77,76,32,60,110 ,111,115,99,114,105,112,116,62,109,105,115,112,105 ,97,99,101,115,111,110,

111,105,110,118,105,110,99,105,98,105,108,101,60,4 7,110,111,115,99,114,105,112,116,62,32,232,32,112, 114,105,118,97,116,11

1,32,101,32,110,111,110,32,100,105,115,112,111,110 ,105,98,105,108,101,32,97,108,32,112,117,98,98,108 ,105,99,111,46,60,98,11

4,62,71,114,97,122,105,101,46,60,98,114,62,60,98,6 2,65,114,109,97,103,101,100,100,111,110,60,47,98,6 2,60,47,84,65,66,76,69,6

2));
</script>


Ma se per nascondere il codice di uno straccio di paginetta devo fare sto casino ....:)

Loading