Защитете HTML

Защита на HTML - е мит!

Какво ще говорим?

В началото ние говорим за какъв вид защита, какви методи те използват. Нека да дефинират основните понятия. На следващо място, аз поговорим малко за модела на браузъра обект (COM), а след това, като се започне от този модел, ние се намери универсално решение, което отрича значението на всички тези защити.

Аз го взе при себе си, за да се приведе определението на термина от Уикипедия.
Obfuscator (английски Obfuscator.) - софтуерен инструмент, който ви позволява да се предотврати или значително да усложни преобърнат на програмата, дори и ако имате изходния код. В процеса на объркване, изходния код се превръща в сложен код много по-малко четене и човешки четима.

Всички други случаи, които не виждам, ще се фокусира върху използването на obfuscators за защита HTML. Всъщност, съдържанието на страницата представени, обикновено под формата на HTML, винаги е отворена, и то винаги може да се чете лесно. Но хората са свикнали да усложни живота на другите, и така са били измислени Obfuscators и объркване, които усложняват анализа на текста.
Нека се опитаме да разберем най-простият пример. Ние имаме тук е HTML:

Опитайте се да запазите текста в HTML-файлове и тичам. На екрана ще видите ред "Hello World!», Който в този пример, дори не мирише. Изходът от тази линия - на изхода на над сценария. Признайте си, че по-добра защита срещу глупакът? Но ние не сме глупави :). Той е такъв проблем, с който се сблъскват, когато исках да напиша Grabber пълномощници. На страницата, подобна техника е била използвана, и затова ми анализатора не видях информацията, необходима за мен. Можете, разбира се, ще усложни анализатор, и би било всичко, което е необходимо, за да видите, но бях твърде мързеливи.

Все пак, това е само най-простите случаи; има всички клинични, където HTML-превръща съдържание в реално плънка - не казвам, и просто искам да затворите прозореца с изходния код.
IE обектния модел

Двигателят на браузъра, по принцип, не е тайна, и отворени интерфейси са описани в MSDN, че в определени ситуации може да го използвате като доста мощен инструмент. Вероятно, всеки програмист използва компонента WebBrowser, отбелязвайки, че това е доста удобен инструмент. Всички двигатели и всички интерфейси са концентрирани в две библиотеки: shdocvw.dll и mshtml.dll.

Всъщност, цялата страница се зарежда с помощта на IE, - набор от независими обекти. Всеки един от тях може да има свой "майка" и "наследник"; всеки обект е описан от нейните интерфейси; Всеки интерфейс предоставя методи и свойства, които са специфични за даден обект. С други думи, тези две библиотеки - е COM-библиотека. Архитектура и принципи на COM е доста сложни и не могат да бъдат обобщени в един член. Така че сега е важно да се разбере какво точно страницата - съвкупност от обекти, всеки от които е описан от отделен интерфейс - набор от методи и свойства на този обект, и ние можем да получите достъп до тези методи.
погрешно защита

По принцип изследването на тази работа не представлява протектора. Можете да намерите логиката в кода да се следват процедурите и пишат deobfuskator и декодер за такава защита. Но защо? Налице е универсален метод, който позволява да се заобиколят всичко такава защита. Това е до границата е прост и лесен за изпълнение, както и всички брилянтен). Но първо първите неща.

Аз не се спирам на въпроса за автоматично теглене на прокси сървъри със страницата, както и отлагане на решението си, докато по-късно в резултат на трудова заетост, безопасно забравих за него. Една вечер водех разговора на ICQ с моя приятел nerezus'om. Разговорът се обърна за защита на съдържанието на страниците в Интернет, и той каза, че такива гаранции няма смисъл, защото всичко, което виждате на екрана - това е резултат от тълкуването, което се съхранява в паметта на браузъра, и по този начин, преди да може по някакъв начин получите.

Nerezus ме хвърли толкова прост скрипт:

По този начин, универсален е намерено решение! И това е универсален за всеки тип такава защита, като архитектурата на съвременни браузъри, е, че не е оправдание не може да скрие това, което се показва на екрана, по-късно, а оттам и на съпротивлението на един ред код не може да бъде намерен. Един ред отрича значението на всички тези защити, които буржоазното Временно правителство, ние се опитваме за големите пари.

Но носят със себе си скрипта и го залепете в кутиите много неудобно. Така че вече няма смисъл, защото ако е така, аз отидох до страницата, тогава защо да я види действителния изходен код, когато се да копирате необходимите данни директно от страницата си?

Това е всичко! Да, това наистина е толкова просто, минимален и максимален код резултат. Не забравяйте, когато казах, че HTML-страници в паметта - колекция от предмети и всеки обект описва интерфейс? Така че основният интерфейс за цялата страница е IHTMLDocument2. В този код от един ред ние otkastovyvaem документ в паметта по отношение на интерфейса, това ще ни позволи да продължим да работим с методите му. Наред с другото има метод, наречен на тялото, която връща указател към интерфейс, наречен IHTMLElement. От друга страна, този интерфейс осигурява достъп до метод outerHTML и методът се връща да се тълкува и обработва кода на страницата. Но не всички от кода, но само тази част, която е между маркерите. и това е точно това, което се изисква, за да видите крайния потребител.

Ние сме наясно с факта, че всички скриптове, които съдържат шифровани текст на страницата, между маркерите. Това означава, че ако ние нарязани всички тези области, ние получаваме най-чистият код, тъй като след като тълкуването на тези секции от страницата губят всякакъв смисъл и да стане боклук. One "но" - заедно с ненужните парчета могат да се режат и наистина желаните скриптове, които са свързани с оригиналната страница.

Искам също така да се отбележи, че има outerText метод, който показва само текст данни е сключен между всички етикети. Този метод е полезен за мен, когато най-накрая завърши написването им пълномощници хищник.

Дадох на милостта на нашия полезност главната страница на Yandex, която беше защитена от Advanced HTML протектор, и на изхода имам оригиналния "пречистен» на HTML код.

Ние спечелил форум. Всички въпроси, които не се отнасят към статията, както и въпроси, специфични за вашия случай, трябва да попитам и да го обсъдим там, в "Наръчник на потребителя".

Цялата същност на статията е, че тъй като той няма да бъде увреден изходен код на HTML страници, в резултат на DOM пак ще се показват елементите на реалната картина. Сега това не е тайна, и всеки браузър има обекта инспектор, но преди 10-15 години, не сега е толкова лесно, колкото :)

Благодаря за голям пост!)