Protect html
Protejarea HTML - este un mit!
Ce o să vorbim?
La început să vorbim despre ce fel de protecție, ce metode folosesc. Să ne definim conceptele de bază. În continuare, am vorbi un pic despre modelul obiect de browser (COM), și apoi, pornind de la acest model, vom găsi o soluție universală care neagă semnificația acestor măsuri de protecție.
L-am luat pe mine pentru a aduce definiția termenului de la Wikipedia.
Obfuscator (Obfuscator engleză.) - instrument software care vă permite să prevină sau să complice foarte mult tehnici de inginerie inversă program, chiar dacă aveți codul sursă. În procesul de disimulare, codul sursă este convertit într-un cod de complicat mult mai puțin ușor de citit și ușor de citit-uman.
Toate celelalte cazuri eu nu văd, se va concentra pe utilizarea obfuscators pentru protecția html. Într-adevăr, conținutul paginii prezentate, de obicei, sub formă de HTML, mereu deschis, și poate fi întotdeauna ușor de citit. Dar oamenii sunt folosite pentru a complica viața celuilalt, și astfel au fost inventate Obfuscators și disimulare care complică analiza textului.
Să încercăm să înțelegem cel mai simplu exemplu. Avem aici este un html:
Încercați să salvați textul într-un fișier HTML și a alerga. Pe ecran veți vedea o linie de «Hello World!», Care în acest exemplu, nici măcar nu miros. Rezultatul acestei linii - producția de script-ul de mai sus. Recunoaste, o bună protecție împotriva prost? Dar noi nu suntem proști :). Este o astfel de problemă am confruntat când am vrut să scrie un proxy-uri grabber. Pe pagina, tehnică similară a fost folosită, și, prin urmare, parser meu nu a văzut informațiile necesare pentru mine. Puteți, desigur, ar complica parserul, și ar fi tot ceea ce este necesar pentru a vedea, dar am fost prea leneș.
Cu toate acestea, aceasta este doar cele mai simple de cazuri; există toate clinice, în cazul în care conținutul html-convertit în umplutura real, - nu spune, și doriți doar să închideți fereastra cu codul sursă.
IE Object Model
Motorul a browser-ului, în principiu, nu este un secret, și interfețele deschise sunt descrise în MSDN, că, în anumite situații se poate folosi ca un instrument destul de puternic. Probabil, orice programator folosit componenta WebBrowser, menționând că este destul de un instrument la îndemână. Toate motor și toate interfețele sunt concentrate în două biblioteci: Shdocvw.dll și Mshtml.dll.
De fapt, întreaga pagină este încărcată folosind IE, - un set de obiecte independente. Fiecare dintre ele poate avea ei „mamă“ și „moștenitor“; fiecare obiect este descris de interfețele sale; Fiecare interfață oferă metode și proprietăți care sunt specifice unui anumit obiect. Cu alte cuvinte, aceste două biblioteci - este un COM-bibliotecă. Arhitectura și principiile COM este destul de complex și nu pot fi rezumate într-un singur articol. Deci, acum este important să se înțeleagă exact ceea ce pagina - o colecție de obiecte, fiecare dintre care este descrisă printr-o interfață separată - un set de metode și proprietăți ale acestui obiect, și putem avea acces la aceste metode.
mis-protecție
În principiu, studiul de astfel de lucrări nu constituie o bandă de rulare. Puteți găsi logica în codul să urmeze procedurile și scrie deobfuskator și decodor pentru o astfel de protecție. Dar de ce? Există o metodă universală care vă permite să ocolească tot o astfel de protecție. Este până la limita este simplu și ușor de implementat, precum și toate genial;). Dar, mai întâi lucrurile primele.
Nu am insista pe problema tragerea automată a serverelor proxy cu pagina, și amânarea deciziei sale până mai târziu din cauza ocupării forței de muncă, în condiții de siguranță a uitat despre asta. Într-o seară, am condus conversația de pe ICQ cu prietenul meu nerezus'om. Conversația pornit protecția conținutului paginilor de pe internet, și a spus că astfel de măsuri de protecție nu are sens, pentru că tot ceea ce vedem pe ecran - acesta este rezultatul interpretării, care este stocată în memoria browser-ului, și, prin urmare, înainte de a putea într-un fel obține.
Nerezus mi-a aruncat un astfel de scenariu simplu:
Astfel, o soluție universală a fost găsit! Și este universal pentru orice tip de o astfel de protecție, ca arhitectura de browsere moderne este faptul că nici o apărare nu se poate ascunde ceea ce este afișat pe ecran mai târziu, și, prin urmare, rezistența la o singură linie de cod nu poate fi găsit. O linie neagă sensul acestor măsuri de protecție, pe care Guvernul Provizoriu burghez, vom încerca pentru bani mari.
Dar, să poarte cu ei script-ul și stick-l în casetele foarte inconfortabil. Deci, nu mai există nici un sens, pentru că dacă este așa, m-am dus la pagina, atunci de ce nu am vedea codul sursa ei reală atunci când pot copia datele necesare direct din pagina mea?
Asta-i tot! Da, într-adevăr este că un simplu cod, minim și un rezultat maxim. Amintiți-vă atunci când am spus că HTML-pagini în memorie - o colecție de obiecte și fiecare obiect descrie interfața? Deci, interfața de bază pentru întreaga pagină este IHTMLDocument2. In aceasta linie de cod am otkastovyvaem documente în memorie cu privire la interfața, aceasta ne va permite să continue să lucreze cu metodele sale. Printre altele există o metodă numită corpul, care returnează un pointer la interfata numita IHTMLElement. La rândul său, această interfață oferă acces la metoda outerHTML, și metoda se întoarce să interpreteze și să proceseze un cod de pagină. Dar nu toate din cod, dar numai acea parte care este între etichetele. iar acest lucru este exact ceea ce este necesar pentru a vedea utilizatorul final.
Suntem conștienți de faptul că toate script-urile care conțin organism criptate a paginii, între etichetele. Acest lucru înseamnă că, dacă am tăiat toate aceste domenii, vom obține cel mai curat cod, deoarece după interpretarea acestor secțiuni ale paginii pierde toate sens și să devină gunoi. Un „dar“ - împreună cu piesele care nu sunt necesare pot fi tăiate și într-adevăr, script-urile dorite, care sunt legate de pagina originală.
De asemenea, doresc să rețineți că outerText metodă care afișează numai date de tip text este introdus în între orice etichete. Această metodă este utilă pentru mine, când în cele din urmă am terminat de scris proxy-uri lor gheară.
I-am dat la mila paginii noastre de utilitate principal al Yandex, care a fost protejat de HTML avansat Protector, și de ieșire am primit originalul „purificat» cod html.
Am câștigat pe forum. Toate aspectele care nu se referă la articol, precum și întrebări specifice pentru cazul dumneavoastră, trebuie să cereți și să discute acolo, în „User Help“.
Întreaga esența articolului este că, deoarece nu ar fi disimulat pagini codul sursă HTML, având ca rezultat DOM va arăta în continuare elementele de imagine reale. Acum nu este un secret, iar fiecare browser are Object Inspector, dar acum 10-15 de ani, nu a fost la fel de ușor ca și acum :)
Multumesc pentru marele post!)