Pull to refresh

Чем может грозить точка в конце доменного имени

Information Security *Website development *
Существует такое понятие, как корневой домен, соответственно, в конце каждого домена есть точка. Возможно, вы и не подозреваете, что ваш сайт доступен по доменному имени с точкой в конце (domain.zone.), так как браузеры позволяют обращаться к сайтам, как с точкой в конце домена, так и без неё.

Здесь можно почитать поподробнее про полные и относительные доменные имена.

Возможные проблемы


Если не учитывать тот факт, что пользователь может случайно ввести доменное имя с точкой в конце или перейти по ссылке от «доброжелателя» и попасть на доменное имя вашего сайта с точкой в конце, есть вероятность возникновения следующих непредвиденных ситуаций:

1) Если вебсайт работает по HTTPS, при обращении к доменному имени с точкой в конце, браузер выдаст предупреждение о недоверенном соединении, чему пользователь будет несколько удивлён.

2) Может не работать авторизация, т.к. кука чаще всего ставится на доменное имя без указания точки в конце. Пользователь в этом случае будет долго недоумевать, почему ему не удаётся авторизоваться. Примечательно, что, если вы установите куку на доменное имя с точкой в конце, она НЕ будет передана доменному имени без точки в конце и наоборот.

3) Может ломаться JavaScript на странице, если не учтена вероятность доступа к сайту по доменному имени с точкой в конце, что для солидных ресурсов недопустимо.

4) Могут возникнуть проблемы с кэшированием страниц сайта (например, тот же www.cloudflare.com просто не даёт очищать кэш отдельных страниц с точкой в конце, сообщая, что указано неверное доменное имя).

5) Если вы в условиях в конфигурации веб-сервера полагаетесь на конкретное доменное имя (%{HTTP_HOST} в Apache, $http_host в Nginx) без точки в конце, возможно возникновение самых разных непредвиденных ситуаций: неожиданные редиректы, чудеса с basic-авторизацией и т.п.

6) Если веб-сервер не настроен на обслуживание доменного имени с точкой в конце, пользователь, случайно набрав точку в конце домена, увидит что-то вроде: Bad Request — Invalid Hostname.

7) Теоретически поисковые системы могут посчитать, что на вашем ресурсе имеет место дублирование контента, если кто-то случайно или умышленно разместит ссылки на страницы вашего сайта с точкой в конце доменного имени (если вы располагаете информацией о том, воспринимают ли поисковые системы domain.zone и domain.zone. как один домен – добро пожаловать в комментарии к топику).

Решение


Избежать части вышеописанных проблем позволит редирект с доменного имени с точкой на доменное имя без точки:

Apache (.htaccess)
RewriteCond %{HTTP_HOST} !^domain\.zone$
RewriteRule ^(.*)$ http://domain.zone/$1 [L,R=301]

Nginx (nginx.conf)
if ($http_host != 'domain.zone') {
    return 301 http://domain.zone$request_uri;
} 

IIS (web.config)
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<rule name="point" stopProcessing="true"> <match url="^(.*)\.$" />
    <action type="Redirect" url="{R:1}" redirectType="Temporary" /> 
</rule>

Разведка боем


Facebook
https://www.facebook.com.
Перенаправляет на www.facebook.com (после соглашения с предупреждением о недоверенном соединении).

Megaupload
https://mega.co.nz./#login
Авторизация успешно отрабатывает, но после перехода на домен без точки в конце https://mega.co.nz, пользователь считается неавторизованным.

Stack Overflow
http://stackoverflow.com.
Bad Request — Invalid Hostname
HTTP Error 400. The request hostname is invalid.

GitHub
https://github.com./login
Авторизация не работает.

Twitter
https://twitter.com.
404 — Страница не найдена.

Yahoo
https://login.yahoo.com.
Авторизация не работает.

Wikipedia
http://en.wikipedia.org./w/index.php?title=Special:UserLogin
Авторизация не работает.

MSN
http://msn.com.
Bad Request — Invalid Hostname
HTTP Error 400. The request hostname is invalid.

Microsoft
http://microsoft.com.
Bad Request — Invalid Hostname
HTTP Error 400. The request hostname is invalid.

eBay
https://signin.ebay.com./ws/eBayISAPI.dll?SellItem
Авторизация успешно отрабатывает.

Tumblr
http://www.tumblr.com.
Не найдено.

Flickr
http://www.flickr.com.
Извините, Flickr не разрешает встраивание в iframe.

Dropbox
www.dropbox.com./login
Ошибка (403) Кажется, вы пытались сделать что-то странное. Вы авторизовались в другом аккаунте Dropbox в соседнем окне?

VK
http://vk.com.
Авторизация не работает.
Ошибка JavaScript: «NS_ERROR_DOM_BAD_DOCUMENT_DOMAIN: Illegal document.domain value» vk.com. (строка 41)

Alexa
https://www.alexa.com.
Перенаправляет на www.alexa.com

Яндекс-Почта
https://mail.yandex.ru.
Авторизация успешно отрабатывает и происходит редирект на mail.yandex.ru/neo2/#inbox

Яндекс-Поиск
www.yandex.ru.
Ошибка JavaScript: «NS_ERROR_DOM_BAD_DOCUMENT_DOMAIN: Illegal document.domain value» www.yandex.ru. (строка 5)

Хабрахабр
http://habrahabr.ru./login/
Авторизация не работает.

Mail.ru
http://mail.ru.
Настроен редирект на mail.ru
https://e.mail.ru./cgi-bin/login
Авторизация не работает.

UPD:
1) В Nginx у вас не получится настроить виртуальный сервер, указав в качестве server_name полностью определённое доменное имя (#comment_6011533):
server {
     server_name domain.zone. ;
    ...
}
Only registered users can participate in poll. Log in, please.
А что вы делаете с точкой в конце доменов ваших ресурсов?
44.96% Ничего и не планирую что-то делать 1512
43.38% Только узнал о том, что такое возможно, планирую заняться 1459
9.46% Перенаправляю на домен без точки в конце 318
2.2% Отдаю 404 ошибку «Страница не найдена» 74
3363 users voted. 796 users abstained.
Tags:
Hubs:
Total votes 150: ↑130 and ↓20 +110
Views 95K
Comments Comments 83