cat_mucius: (Default)
[personal profile] cat_mucius
R2R пишет, что сайт новостей ролевых игр, в котором она принимает участие, заблокирован российским интернет-цензором. В связи с этим небольшой пост о том, как затруднить такую блокировку минимальными средствами - подходит для мелких вебпроектов.

Есть тьма способов обходить сетевые фильтры путём шифрования и прятанья одних пакетов в других (SSH, VPN, Tor, I2P, etc.), но все они требуют активных действий со стороны читателей запрещённых сайтов. А что со своей стороны может сделать вебмастер?

Вебмастер может использовать тот факт, что цензура вынуждена быть избирательной, старается точечно гасить определённые сайты и страницы, и не может себе на этом этапе позволить логику "всё, что явно не разрешено - запрещено". Для этого из запроса, посылаемого читательским компом, ей надо вычленить максимум информации о том, что именно запрашивают. Стало быть, именно это точечное разрешение и надо затруднять.

Блокировка может осуществляться 3-4 способами:
1. по IP (точнее, по паре IP:порт). Видим, что пытаются обратиться на конкретный адрес - отвечаем вместо него страницей "мы приносим свои извинения, но хрен вам".
2. по DNS - видим, что запрашивают имя запрещённого сайта, подсовываем левый IP с оной страницей.
3. по HTTP-запросу (наиболее точный способ) - видим в заголовке адрес определённой страницы, блокируем.

Это всё абсолютно тривиально, но не все знают, что можно и
4. по HTTPS-запросу - видим адрес запрашиваемого сайта, блокируем.

Почему, ведь HTTPS - он шифрованный? Верно, с одним исключением. Имя сайта (hostname) современные браузеры высылают всё-таки открытым текстом. Ради чего, это ведь нарушает принцип, ради которого HTTPS и придумывался? А вот догадайтесь. :-) Хинт: без этого возникает забавная техническая проблема курицы и яйца.

Ваши версии?


Таким образом, сайт строить нужно так, чтобы все 4 способа были бы для интернет-цензуры неприменимы. А для этого требуется несколько пересмотреть подход к сайтостроению. На протяжении двух десятилетий каждый вебмастер старался первым делом обзавестись каким-то легкозапоминаемым vanity URL: скажем, если он хостится у какого-то провайдера, то чтобы адрес был не http://provider.com/path/to/vasya или http://provider.com/~vasya, а http://vasya.provider.com. А ещё лучше - и вовсе скрыть всё лишнее: http://vasya.com/. Чем больше процент уникальной информации в адресе - тем лучше. А уж обзавестись собственным сервером, собственным IP, собственной сетью - ещё круче. Но и тем легче блокировать!

Потому именно от этого и надо отказаться: не выступать гордо под собственным флагом, а напротив, прятаться за спиной гигантов. Использовать URL вида https://provider.com/vasya, обязательно с HTTPS на всех страницах. Да, это ударяет по запоминаемости, да, юзерам придётся держать в уме, что без https:// сайт не откроется. Но тогда всё, что сможет выцепить интернет-фильтр - это что обращение идёт на hostname провайдера и на IP провайдера, и если провайдер огромный и содержит десятки тысяч проектов (Гугл, Фейсбук, Windows Azure, Wordpress, etc.), то его блокировать цензуре выйдет себе дороже.

И да, естественно! провайдер должен быть не российский.

P.S. Ещё один плюс такого подхода - не нужно заботиться и тратиться на SSL-сертификат, у провайдера свой есть. Ну а недостатки очевидны: отсутствие гибкости в сайтостроении, растущая зависимость от крупных западных компаний.

P.P.S. Да, если вы знаете примеры провайдеров, позволяющих создавать адреса такого вида - напишите, плиз. Насколько я знаю, Blogger (Blogspot) и Wordpress.com не позволяют, Google Sites - да.

Profile

cat_mucius: (Default)
cat_mucius

July 2017

S M T W T F S
      1
2345678
9101112131415
16171819 202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 08:46 am
Powered by Dreamwidth Studios