Proof-of-Concept(POC) — наша новая рубрика, в которой мы будем рассказывать об интересных концептах, выковыренных нами в самых разных уголках интернета. Если и тебе встретится что-нибудь интересное — смело присылай нам это по адресу poc@real.xakep.ru.

Прекрасную и очень оригинальную идею бесплатного анонимного хостинга предложил недавно автор блога malaya-zemlya.livejournal.com. Суть идеи очень проста — запихнуть весь контент странички в URL, а затем сократить с помощью любого сервиса сокращения URL’ов вроде bit.ly, goo.gl или tinyurl.com. Потребуется только разместить где-то элементарный скриптик, который будет из урла брать контент и выводить на экран. Хранить он при этом его не будет. Хранить весь контент будет сокращалка. В общем, красота. Давай поподробнее разберемся, как это работает.

Итак, есть ссылка, например, tinyurl.com/3nghu2l. При переходе по ней — нас переправит на длиннющую ссылку вроде следующей:

http://хостинг/яваскрптик.html#PGhlYWQ+CjxzdHls
Z4KYm9keSB7CiAgY29sb3I6ICNGRjY7CiAgYmFja2dyb3VuZ
C1jb2xvcjogIzAwMDsKfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib
2R5PgpUaGlzIHBhZ2UgaXMgaG9zdGVkIG9uIDxhIGhyZWY9I
mh0dHA6Ly90aW55dXJsLmNvbSI+dGlueXVybC5jb208L2E+C
jwvYm9keT4=

В ней все после знака ‘#’ — это наш контент в base64формате, а яваскриптик — это скрипт, делающий вот так:

var hsh = document.location.hash;
hsh = hsh .substring(1, hsh .length);
document.write(decode64(hsh ));
// decode64 — функция, декодирующая base64

То есть он просто получит все, что после ‘#’, раскодирует и выведет на экран.

В RFC длина URL никак не регламентирована, поэтому можно смело кодировать с помощью любого base64-алгоритма html-код любой длины, надеясь, что браузеры тоже никак не ограничивают длину урла. Чтобы разместить таким образом картинки, нужно будет немного потрахаться с data. Вот так, например:

<img src="data:image/gif;base64,R0lGODlhEAAOAL
MAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/
rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAA
Re8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmT
IHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjP
ZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" width="16"
height="14"/>

Синтаксис тут простой (данные, понятно, в пресловутом base64):

data:[<тип данных>][;base64],<данные>

Как применять такую занятную идею, мы предлагаем тебе придумать самостоятельно, но, уверены, у всех случается необходимость что-то опубликовать, но… не у себя. Чтобы не прицепились, а то всякое бывает ;).

 

Оставить мнение

Check Also

Плохая логика. Выполняем произвольный код в популярном сервере приложений Oracle WebLogic

Новая уязвимость в Oracle WebLogic позволяет выполнять произвольные команды на целевой сис…