Безопасность использования URL без указания протокола
Быстрый ответ
Используйте URL, автоматически адаптирующиеся под протокол текущей страницы. Для этого вставьте //
перед адресом, в таком случае браузер сам выберет нужный протокол (HTTP или HTTPS).
Пример:
<!-- белка предлагает вам жёлудь [URL] 🐿️ -->
<a href="//example.com/page">Привет, страница!</a>
Такой подход обеспечивает безопасность и совместимость без необходимости явного указания протокола.
Принцип работы относительных URL
Отсутствие протокола в URL позволяет использовать тот же протокол, что и у страницы, где открывается ссылка. Это известно как «ссылка на сетевой путь» согласно RFC 3986, и помогает избежать проблем со смешанным содержимым, непосредственно когда страница на HTTPS загружает элементы по HTTP, создавая потенциальные угрозы безопасности в браузерах.
Нюансы и ограничения
Несмотря на простоту, такой подход имеет свои ограничения. Так, старые браузеры, например, IE7 и IE8, могут работать с такими URL некорректно, особенно внутри тегов <link>
или CSS-директив @import
. Это может привести к ошибкам загрузки файлов.
История возникновения и признание
URL, адаптирующийся под протокол, стал известным благодаря работе Пола Айриша. Его статьи представили этот прием, который был поддержан такими ресурсами, как руководство Google по HTML/CSS и HTML5 Boilerplate. Однако при использовании этого подхода следует быть осторожными, поскольку могут возникнуть проблемы, например с IE6 или Google Analytics.
Тестирование
Перед использованием подобных URL обеспечьте полное тестирование на совместимость с различными браузерами. Инструменты как "Can I Use" помогут выявить возможные проблемы и подготовить вас к их решению.
Визуализация
Velекий пример аналогии относительного URL — это универсальный адаптер питания для различных устройств:
| Устройство | Адаптер |
| ------------------- | ---------------------- |
| Смартфон (📱) | Адаптер (🔌➖🔗) |
| Планшет (💊) | Адаптер (🔌➖🔗) |
| Ноутбук (💻) | Адаптер (🔌➖🔗) |
Таким же образом URL без явно указанного протокола адаптируются под схему текущей страницы.
Текущая схема страницы: HTTPS 🔒
URL: //example.com/path ➡️ Превращается в HTTPS://example.com/path
Текущая схема страницы: HTTP 🌍
URL: //example.com/path ➡️ Превращается в HTTP://example.com/path
При этом необходимо учитывать влияние таких URL на SEO — правильное ими управление улучшает видимость сайта для поисковых систем.
SEO и доступность
Относительные URL улучшают безопасность и совместимость, что положительно влияет на SEO и делает контент более доступным.
Предосторожности
С течением времени использование HTTPS стало приоритетом по сравнению с относительными URL для обеспечения высокого уровня безопасности. Поэтому, несмотря на удобство относительных URL, рекомендуется использовать зашифрованные протоколы.
Полезные материалы
- Что такое URL? — подробное руководство по структуре URL;
- Крутые URI для Семантического Веба — руководство по методам управления URI от W3C;
- Обсуждение использования относительных URL на Stack Overflow;
- Как избежать смешанного содержимого — советы по обеспечению безопасности веб-сайтов;
- Общая информация о схемах URI и относительных URL;
- Поддержка браузерами относительных URL;
- Управление параметрами URL с точки зрения SEO.