Статья

Что вы знаете об URL'ах?

Наука Цифровизация Бизнес-приложения

Не случалось ли вам встречать в интернете адреса, которые выглядят, как минимум, странно, если не сказать - подозрительно? Что-нибудь вроде http://3523654789@3474540315/%57O%52L%44/?
Не всегда и не обязательно такие адреса ведут в никуда. Приведенный выше пример приведет вас на страницу всемирных новостей CNN World News, которая находится по адресу с обычным URL http://www.cnn.com/WORLD/

Теперь попробуйте побывать здесь:
http://!$^&*()_+`-={}|[]:;@www.cnn.com/WORLD/ , а также
http://207.25.71.27/WORLD/ 
http://24949376795/WORLD/ 
http://00000317.0000031.00000107.0000033/WORLD/ 
http://0xcf.0x19.0x47.0x1b/WORLD/ 
http://0xCF.25.0107.0x1B/WORLD/

Удивлены? Ничего страшного - большинство посетителей интернета и даже некоторая часть разработчиков Web-страниц не догадываются о существовании различных способов задания URL. Зато многие спаммеры и мошенники прекрасно осведомлены о таких возможностях и порой с успехом избегают собственной авторизации при рассылке писем с недобросовестной рекламой или сомнительными предложениями. Имеет смысл попробовать разобраться в таких способах хотя бы ради защиты собственного покоя.

Как это делается
Давайте разберемся последовательно с каждым способом.
http://3523654789@3474540315/WORLD/

Симовл "@", поставленный среди прочих цифр, означает, что все знаки между "http://" и "@" к выбору конкретно адреса никакого отношения не имеют. Можно поэкспериментировать и попробовать поставить в это место любые знаки:

http://кул-хацкер@www.cnn.com/WORLD/

http://!$^&*()_+`-={}|[]:;@www.cnn.com/WORLD/

Попробуйте пройтись по этим линкам. Будьте уверены, они приведут вас в одно и то же место

Знаки, введенные между "http://" и "@" используются для аутентификации пользователя. Например, если вход на определенный ресурс интернета требует ввода логина и пароля. В этом случае, имя пользователя и пароль разделяются двоеточием, например:

http://username:password@www.whatever.com/members/memberpage.html
В том случае, если вход не требует авторизации пользователя, лишние знаки просто игнорируются сервером.

Такие хитрости дают иногда возможность водить за нос незадачливого пользователя.
Адрес http://www.playboy.com@3474540315/WORLD/ не приведет посетителя на сайт playboy.com. А выглядит URL, согласитесь, с намеком именно на этот ресурс!

Итак, первая часть линка http://3523654789@3474540315/%57O%52L%44/. нам уже понятна.

Но каким образом число 3474540315 может заменить нам адрес http://www.cnn.com/? Тем не менее, это два абсолютно эквивалентных способа записи адреса.

Главное правило, известное большинству сетян : имена адресов в интернете переводятся в номера, называемые IP-адресом (все чаще можно услышать в разговоре термин "айпишник"). Обычно, IP-адрес выглядит как число, разделенное "на разряды" (или на "триады") точками. Например, http://www.cnn.com/ переводится в 207.25.71.29 (и в многие другие IP-адреса).
Числовые IP-адреса, как правило, ничего не могут подсказать пользователю и достаточно трудны в запоминании. Из-за этого мы пользуемся именными идентификаторами.
 

Как найти IP-адрес
IP-адреса, записанные цифрами с разделением на разряды точками, как правило, содержат четыре числовых сегмента. Номера в каждом сегменте находятся в промежутке от 0 до 255.
Перевод сетевого имени в IP-адрес обычно выполняется сетевыми программами, в автоматическом режиме. Получив имя, ваш браузер делает запрос у сервера имен, специальной машины в Сети, которая обрабатывает запрос и отправляет запрос IP-адреса уже в цифровой форме.
Существует множество утилит, с помощью которых можно сделать запрос и получить результат, не прибегая к услугам браузера, в отм числе с графическим интерфейсом для Windows. Одна из них - NSLOOKUP - является одной из самых простых и работает из командной строки в режиме DOS следующим образом:

nslookup [имя или IP-адрес] [имя вашего сервера]

Обязательно нужно указать имя вашего сервера и на выбор - имя или IP-адрес, который интересует. Если вы не знаете адреса своего провайдера (в большинстве случаев - при дозвоне провайдеру по коммутироемой линии статичного адреса и не может быть) мрожно использовать, например, вот такой: 198.41.0.196
Теперь набирем в командной строке:
nslookup www.cnn.com 198.41.0.196
Вот что должно получиться:

C:\>nslookup www.cnn.com 198.41.0.196   <-- Комманда, которую вы набрали
Server:  ns.netsol.com   <-- Имя сервера, который вы выбрали (198.41.0.196)
Address:  198.41.0.196  <-- IP-адрес сервера, с которого делается запрос
Name:    cnn.com    <-- "Настоящее имя www.cnn.com
Addresses:  207.25.71.199, 207.25.71.5, 207.25.71.6, 207.25.71.7
          207.25.71.20, 207.25.71.22, 207.25.71.23, 207.25.71.24, 207.25.71.25
          207.25.71.26, 207.25.71.27, 207.25.71.28, 207.25.71.29, 207.25.71.30    
<-- IP-адреса запрошенного ресурса
Aliases:  www.cnn.com   <-- www.cnn.com - не является именем, первоначально выделенным ресурсу, а лишь один из возможных вариантов.

То же самое можно проделать и с помощью браузера. Просто различные программы используют различные шлюзы для определения имен и IP-адресов.
Таким образом, что бы вы не набрали в адресной строке - http://www.cnn.com/ или http://207.25.71.27 - результат будет один и тот же.

Теперь рассмотрим, каким же образом адреса http://www.cnn.com или http://207.25.71.27 способны превратиться в http://3474540315.

Числовая запись адреса 3474540315 является аналогом 207.25.71.27, записанным в так называемой "dword"-форме, то есть с помощью сдвоенных 16-битных шестнадцатиричных "слов", приведенных к десятичному виду. Существуют варианты использования восьмиричной системы счисления.

Ниже описаны варианты конвертации шестнадцатиричных и восьмиричных чисел и способы их использования.

Способы конвертации и использования различных видов записи
Вот ещё один вариант записи той же самой страницы: http://207.25.71.27/WORLD/
При использовании Internet Explorer все работает нормально, проблемы будут только при попытке использования браузера Netscape версий 3.x. Номера в IP-адресе имеют значения между 0 and 255. Они легко переписываются в двоичные 8-битные числа (из нулей и единичек), максимальное значение которых как раз и составляет 255.

Теперь несколько усложним наш пример. Вот ещё один вариант записи того же URL:
http://3523654789@3474540315/%57O%52L%44/

Вот как это работает:
Каждый символ в URL может быть представлен представленным ему номером в шестнадцатиричной форме. Перед каждым таким символом нужно ставить знак "%" для идентификации последующих за ним двух цифр/букв в качестве шестнадцатиричного представления. На практике такой способ применяется для отображения пробелов и и других неиспользуемых симоволов в URL. Но способ работает и со всеми остальными символами.
В нашем примере интерпретируется выражение "/WORLD/", и вот что получается в результате:

/    %57    O    %52    L    %44   /
/      W       O       R       L       D      /

Буквы в шестнадцатиричной записи могут быть прописными или строчными; косая черта в шестнадцатиричной форме не отображается.
Ниже приведена таблица соответствия символов шестнадцатиричным эквивалентам.


Таблица ASCII символов


Вот таким образом объясняется запись http://3523654789@3474540315/%57O%52L%44/
Кстати, символ @ может быть представлен шестнадцатиричным кодом %40 :
http://3523654789%403474540315/%57O%52L%44/

Продолжение статьи читайте здесь