О сайтах и не о сайтах

Теперь и в tg!

tg

Переехал с твиттера на t.me/tulvit_blog, если что.

Элементарная обфускация JavaScript

Не совсем, конечно, обфускация, но если исходить из определения с википедии ("приведение исходного текста программы к виду, сохраняющему ее функциональность, но затрудняющему анализ") - то вполне себе да.

Все что требуется - это закодировать исходный код через Base64, а в конечном варианте его просто обратно декодировать.
Т. е. есть такой JS:

alert('Hello, world!');

Мы берем этот alert('Hello, world'); и представляем его в формате base64, можно тем же JS через функцию btoa() или другим ЯП, или вообще каким-нибудь онлайн сервисом.

Получаем следующее:

YWxlcnQoJ0hlbGxvLCB3b3JsZCEnKTs=

Важный момент: Base64 не может в мультибайтинг, только ASCII, поэтому использовать в коде следует исключительно латиницу.

Чтобы этот "обфусцированный" код выполнить, строчку надо раскодировать обратно через atob() и прогнать через eval():

eval(btoa("YWxlcnQoJ0hlbGxvLCB3b3JsZCEnKTs="));

Собственно, этот код выше - полный эквивалент изначального "Hello, world!".

Ну да, только что защита от "дурака", не обладающего никакими знаниями в программировании. Если есть хоть минимальный навык в кодинге, понять что к чему не составит никакого труда. Но тут стоит учесть, что ровно такой же уровень "защиты" предоставляют и все другие публичные сервисы обфускации. Да, они сложны алгоритмически и все такое. Но они публичны. И ровно по этой причине декодируются обратно все теми же публичными сервисами. Т. е. по-хорошему если и делать обфускацию, то чисто самописную с единственным критерием - чтобы нельзя было декодировать уже готовыми средствами. Понятное дело, что все это расшифровывается все тем же самописом, однако в этом случае потребуется приложение некоторых сил, что не всегда является рентабельным.