Https как работает


Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. При изучении механизма, отвечающего за корректное функционирование сети интернет, никуда не уйти от необходимости уделить время его основным аспектам, в число коих, вне всякого сомнения, входит протокол передачи данных HTTP и его безопасная версия HTTPS.

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

«>

Конечно, тем, кто желает по-настоящему посвятить свою деятельность работе с компьютерными сетями и разработке сетевых программ, необходимо изучить этот вопрос по максимуму для получения соответствующей квалификации. Но нам это не требуется.

Главное — понять, что представляет из себя HTTP в общих чертах и каковы главные особенности HTTPS, а также постичь базовые принципы, которые в них заложены. Подобные знания будут полезны в том числе для для оптимизации и продвижения вашего сайта, этому вы получите безусловное подтверждение из этой и последующих статей, посвященных данной теме.

Что такое HTTP и как он работает?


Чтобы получить нужный документ в интернете, пользователю достаточно ввести в поисковую строку браузера нужный URL-адрес (тут о структуре урлов подробности), который как раз содержит название протокола HTTP (или HTTPS).

Сюда же входит имя домена (что это?), следующее за двойным слешем «//». Причем, путь (часть адреса за слешем после домена) может быть прописан как до нужной страницы сайта, так и до файла, физически находящегося в определенной директории (папке). Но это может быть и главная вебстраница, адрес которой состоит только из доменного имени:

http://goldbusinessnet.com/osnovy-html/chto-takoe-html-tegi-i-struktura-dokumenta/  http://goldbusinessnet.com/wp-content/uploads/2017/04/url.jpg  https://www.yandex.ru/

А теперь попробуем разобраться в общих чертах, как работает этот механизм. Для начала необходимо выяснить, что же такое HTTP. Это протокол, который служит для «транспортировки» информации между клиентским приложением и сервером.

Аббревиатура HTTP (HyperText Transfer Protocol) переводится с английского как «протокол передачи гипертекста». Вообще говоря, протоколов достаточно много, и каждый из них решает определенную задачу (например, тот же FTP).


Но нас в первую очередь интересует HTTP, поскольку именно этот протокол связан с отображением страниц в браузере, которые как раз имеют гипертекстовую структуру, отличающуюся наличием ссылок, помогающих пользователю переходить от одного текстового фрагмента к другому (со страницы на страницу в пределах одного сайта либо даже на вебстраницу другого ресурса).

Необходимо отметить, что передача данных по HTTP происходит посредством TCP/IP-соединения. При этом серверное приложение по умолчанию использует порт 80, хотя в некоторых случаях может применяться и другой.

TCP (Transmission Control Protocol)/IP является довольно сложной системой и включает в себя четыре уровня протоколов (прикладной, к которому и относится HTTP, транспортный, сетевой и канальный). Думаю, для общей информации этого пока достаточно, а то мы залезем в дебри.

Как осуществляется взаимодействие между клиентским приложением и сервером

Итак, мы определили, что HTTP организует передачу данных в форме гипертекста. Но как это происходит на практике? Я уже упомянул, что здесь применяется технология, заключающаяся в общении между клиентским приложением и сервером, на котором располагаются физические файлы, получаемые в чистом виде для просмотра, либо шаблоны той или иной CMS, генерирующие странички сайта «на лету».


Ну с сервером худо-бедно понятно (это просто большой компьютер, где и расположены веб-сайты), а вот что за клиентские приложения участвуют в «игре»? Но и здесь все просто. Это может быть браузер пользователя (тут о всех популярных веб-обозревателях материал), который является не чем иным как программой для поиска и просмотра информации в глобальной сети.

Я уже давал общую схему того, как, благодаря отлаженному взаимодействию серверов DNS и системы IP-адресации реализовано бесперебойное функционирование интернета, когда пользователь сети может получить доступ к любому файлу или документу (например, к странице сайта) для получения информации, которая его интересует.

Теперь немного конкретизируем действие этого механизма. После того, как юзер вбил в адресную строку URL (который, как известно содержит доменное имя конкретного вебсайта) либо перешел по ссылке с другой вебстраницы или с закладок, браузер обращается в ближайший ДНС сервер.

Там хранятся все имена доменов, каждому из которых соответствует уникальный IP адрес, связанный с сервером, на котором «живет» сайт с этим ДИ. Получив ай-пи, браузер отправляет на сервер HTTP-запрос, после чего получает ответ. Единую схему запросов и ответов при общении клиентского приложения (в нашем случае браузера) с сервером можно представить так:

«>


Между списком заголовков и телом сообщения присутствует пустая строка, которая определяется символом переноса. В случае запроса начальная строка состоит из следующих компонентов:

Метод URI HTTP/Версия  Host: site.ru

Давайте разберем вкратце все составляющие, чтобы иметь хотя бы общее представление об этом этапе взаимодействия браузера и сервера. Итак, верхняя строка:

1. Метод — указывает на действие, которое необходимо совершить с данным веб-ресурсом. Таких методов несколько, но самые распространенные среди них это GET и POST. Первый предполагает получение данных с сервера для просмотра (например, определенную страницу конкретного сайта), а второй обратную операцию, то есть отправку информации на сервер (регистрации пользователей, формы авторизации, различных сообщений и т.д.).

2. URI (унифицированный идентификатор ресурса, который является более общим понятием, чем URL) — путь до файла относительно корневой папки (почитайте, как формируются абсолютные и относительные ссылки).

3. HTTP/Версия — указывается действующая модификация протокола. На данный момент это HTTP 1.1 (вы можете ознакомиться с ее спецификацией). Однако, в черновом виде уже существует следующая версия протокола 2.0, который основан на двоичной (бинарной) системе счисления.


Нижняя строка представляет собой заголовок Host в составе HTTP-запроса, отсылаемого браузером серверу в соответствии с полученным от ДНС IP. Для чего это надо? Для идентификации нужного сайта, поскольку на вебсерверах обычно расположен не один ресурс.

Разберем наглядный пример для закрепления пройденного. Скажем, браузер получил «задание» от пользователя отобразить страничку вот с таким адресом:

http://subscribe.ru/group/

Тогда HTTP-запрос посредством метода GET может быть составлен следующим образом (в этом случае обычно тело сообщения отсутствует):

GET /group/ HTTP/1.1  Host: subscribe.ru

Для наглядности я предоставил лишь самый простой пример, включающий один заголовок Host, на самом деле, их может быть несколько. Но это не все. Ведь для полноценного общения необходим диалог, который и устанавливается после того, как на запрос браузера сервер дает ответ. Начальную строку ответа тоже можно изобразить схематически:

HTTP/Версия Код состояния Пояснение

Теперь пробежимся вкратце и по составу ответа сервера:

1. Версия HTTP указывается по аналогии с запросом.

2. Код состояния (Status Code) — три цифры, информирующие о том, каков статус документа, запрошенного браузером. Например, 200 — ОК, страница существует и будет отображена в браузере, 301 — осуществлен постоянный редирект (перенаправление) на другой урл, 404 — вебстранички по такому адресу нет (возможно, она удалена либо юзер ошибся при вводе URL).


3. Пояснение (Reason Phrase) — текст дополнения к коду ответа. В некоторых случаях пояснение может отличаться от стандартного либо отсутствовать вовсе. Это связано в том числе с настройкой ПО, размещенного на сервере.

Реальный пример? Пожалуйста. Попробуем получить ответ сервера на запрос, приведенный мною в качестве примера выше (урл «http://subscribe.ru/group/»). Он будет выглядеть так (начальная строка с заголовками):

HTTP/1.1 200 OK  Server: nginx  Date: Sat, 10 Jun 2017 06:36:38 GMT  Content-Type: text/html; charset=utf-8  Connection: keep-alive  Content-Language: ru  Set-Cookie: Subscribe::Viziter=UQkivlk7k3YO3DgjAxM2Ag==; expires=Thu, 31-Dec-37 23:55:55 GMT; domain=subscribe.ru; path=/  P3P: policyref="/w3c/p3p.xml", CP="NOI PSA OUR BUS UNI"

В данном случае отсутствуют пояснение и тело сообщения, которое при использовании метода GET может содержать, например, HTML-код запрашиваемого документа (веб-странички). В зависимости от типа приложения клиента эти разделы могут присутствовать.

Итак, резюмируем вкратце выше изложенное. Если пользователь вводит урл искомой страницы, имея ввиду получить ее содержимое для просмотра, браузер посылает GET запрос на нужный сервер и получает ответ. В результате этого общения либо (при благоприятных обстоятельствах) контент запрошенного документа будет отображен, либо нет.


В любом случае, по содержанию HTTP-ответа сервера (включая код состояния) можно получить полезную информацию, связанную с запрашиваемым документом.

Для того, чтобы выше предложенная информация без усилий ложилась в пазл, не хватает конкретного примера. Его мы рассмотрим с помощью одного из расширений Google Chrome (именно этот веб-обозреватель является моим рабочим инструментом), именуемого HTTP Headers.

Он удобен тем, что дает полную картину взаимодействия «клиент-сервер», предоставляя в «одном флаконе» содержание HTTP запроса (request) и ответа (response). Посмотрите, какой документ выдал этот плагин при переходе по ссылке с одной страницы моего блога на другую:

«>

Здесь в самом верху отмечен метод GET, с помощью которого браузер обращается к серверу, а также статус странички, отмеченный кодом состояния 200 OK, который дает понять, что сервер передал все данные в отношении запрашиваемой вебстраницы.

Интерес вызывают также HTTP Headers (заголовки), отображенные ниже. Например, пункт «Referer» дает информацию в виде урла, откуда был осуществлен переход.

Заголовок «User Agent» отражает как раз клиентское приложение, отправившее запрос вебсерверу. В данном случае это браузер, но могут быть и другие (мобильные устройства, поисковые роботы и т.д.). Данные, представленные в Юзер Агенте, необходимы серверному программному обеспечению для идентификации приложения, посылающего запрос.


Как раз боты поисковых систем, сканирующие страницы сайтов для получения информации, влияющей на ранжирование, нас и интересуют в первую очередь, потому как именно они решают судьбу той или иной страницы в плане эффективности ее продвижения.

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

goldbusinessnet.com

Https как работает

Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?


Трубопровод

Перед тем как мы погрузимся в то, как это работает, давайте коротко поговорим о том, почему так важно защищать Интернет-соединения и от чего защищает HTTPS.

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

Https как работает

С вашего собственного компьютера на другие компьютеры вашей локальной сети, через роутеры и свитчи, через вашего провайдера и через множество других промежуточных провайдеров – огромное количество организаций ретранслирует ваши данные. Если злоумышленник окажется хотя бы в одной из них — у него есть возможность посмотреть, какие данные передаются.

Как правило, запросы передаются посредством обычного HTTP, в котором и запрос клиента, и ответ сервера передаются в открытом виде. И есть множество весомых аргументов, почему HTTP не использует шифрование по умолчанию:

• Для этого требуется больше вычислительных мощностей
• Передается больше данных
• Нельзя использовать кеширование

Но в некоторых случаях, когда по каналу связи передается исключительно важная информация (такая как, пароли или данные кредитных карт), необходимо обеспечить дополнительные меры, предотвращающие прослушивание таких соединений.


Transport Layer Security (TLS)

Сейчас мы собираемся погрузиться в мир криптографии, но нам не потребуется для этого какого-то особенного опыта — мы рассмотрим только самые общие вопросы. Итак, криптография позволяет защитить соединение от потенциальных злоумышленников, которые хотят воздействовать на соединение или просто прослушивать его.

TLS — наследник SSL — это такой протокол, наиболее часто применяемый для обеспечения безопасного HTTP соединения (так называемого HTTPS). TLS расположен на уровень ниже протокола HTTP в модели OSI. Объясняя на пальцах, это означает, что в процессе выполнения запроса сперва происходят все “вещи”, связанные с TLS-соединением и уже потом, все что связано с HTTP-соединением.

TLS – гибридная криптографическая система. Это означает, что она использует несколько криптографических подходов, которые мы и рассмотрим далее:

1) Асиметричное шифрование (криптосистема с открытым ключом) для генерации общего секретного ключа и аутентификации (то есть удостоверения в том, что вы – тот за кого себя выдаете).
2) Симметричное шифрование, использующее секретный ключ для дальнейшего шифрования запросов и ответов.

Криптосистема с открытым ключом

Криптосистема с открытым ключом – это разновидность криптографической системы, когда у каждой стороны есть и открытый, и закрытый ключ, математически связанные между собой. Открытый ключ используется для шифрования текста сообщения в “тарабарщину”, в то время как закрытый ключ используется для дешифрования и получения исходного текста.

С тех пор как сообщение было зашифровано с помощью открытого ключа, оно может быть расшифровано только соответствующим ему закрытым ключом. Ни один из ключей не может выполнять обе функции. Открытый ключ публикуется в открытом доступе без риска подвергнуть систему угрозам, но закрытый ключ не должен попасть к кому-либо, не имеющему прав на дешифровку данных. Итак, мы имеем ключи – открытый и закрытый. Одним из наиболее впечатляющих достоинств ассиметричного шифрования является то, что две стороны, ранее совершенно не знающие друг друга, могут установить защищенное соединение, изначально обмениваясь данными по открытому, незащищенному соединению.
Клиент и сервер используют свои собственные закрытые ключи (каждый – свой) и опубликованный открытый ключ для создания общего секретного ключа на сессию.

Это означает, что если кто-нибудь находится между клиентом и сервером и наблюдает за соединением – он все равно не сможет узнать ни закрытый ключ клиента, ни закрытый ключ сервера, ни секретный ключ сессии.

Как это возможно? Математика!

Алгоритм Ди́ффи — Хе́ллмана

Одним из наиболее распространенных подходов является алгоритм обмена ключами Ди́ффи — Хе́ллмана (DH). Этот алгоритм позволяет клиенту и серверу договориться по поводу общего секретного ключа, без необходимости передачи секретного ключа по соединению. Таким образом, злоумышленники, прослушивающие канал, не смогу определить секретный ключ, даже если они будут перехватывать все пакеты данных без исключения.

Как только произошел обмен ключами по DH-алгоритму, полученный секретный ключ может использоваться для шифрования дальнейшего соединения в рамках данной сессии, используя намного более простое симметричное шифрование.

Немного математики…

Математические функции, лежащие в основе этого алгоритма, имею важную отличительную особенность — они относительно просто вычисляются в прямом направлении, но практически не вычисляются в обратном. Это именно та область, где в игру вступают очень большие простые числа.

Пусть Алиса и Боб – две стороны, осуществляющие обмен ключами по DH-алгоритму. Сперва они договариваются о некотором основании root (обычно маленьком числе, таком как 2,3 или 5 ) и об очень большом простом числе prime (больше чем 300 цифр). Оба значения пересылаются в открытом виде по каналу связи, без угрозы компрометировать соединение.

Напомним, что и у Алисы, и у Боба есть собственные закрытые ключи (из более чем 100 цифр), которые никогда не передаются по каналам связи.

По каналу связи же передается смесь mixture, полученная из закрытых ключей, а также значений prime и root.

Таким образом:
Alice’s mixture = (root ^ Alice’s Secret) % prime
Bob’s mixture = (root ^ Bob’s Secret) % prime
где % — остаток от деления

Таким образом, Алиса создает свою смесь mixture на основе утвержденных значений констант (root и prime), Боб делает то же самое. Как только они получили значения mixture друг друга, они производят дополнительные математические операции для получения закрытого ключа сессии. А именно:

Вычисления Алисы
(Bob’s mixture ^ Alice’s Secret) % prime

Вычисления Боба
(Alice’s mixture ^ Bob’s Secret) % prime

Результатом этих операций является одно и то же число, как для Алисы, так и для Боба, и это число и становится закрытым ключом на данную сессию. Обратите внимание, что ни одна из сторон не должна была пересылать свой закрытый ключ по каналу связи, и полученный секретный ключ так же не передавался по открытому соединению. Великолепно!

Для тех, кто меньше подкован в математическом плане, Wikipedia дает прекрасную картинку, объясняющую данный процесс на примере смешивания цветов:

image

Обратите внимание как начальный цвет (желтый) в итоге превращается в один и тот же “смешанный” цвет и у Боба, и у Алисы. Единственное, что передается по открытому каналу связи так это наполовину смешанные цвета, на самом деле бессмысленные для любого прослушивающего канал связи.

Симметричное шифрование

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

Используя секретный ключ, полученный ранее, а также договорившись по поводу режима шифрования, клиент и сервер могут безопасно обмениваться данными, шифруя и дешифруя сообщения, полученные друг от друга с использованием секретного ключа. Злоумышленник, подключившийся каналу, будет видеть лишь “мусор”, гуляющий по сети взад-вперед.

Аутентификация

Алгоритм Диффи-Хеллмана позволяет двум сторонам получить закрытый секретный ключ. Но откуда обе стороны могут уверены, что разговаривают действительно друг с другом? Мы еще не говорили об аутентификации.

Что если я позвоню своему приятелю, мы осуществим DH-обмен ключами, но вдруг окажется, что мой звонок был перехвачен и на самом деле я общался с кем-то другим?! Я по прежнему смогу безопасно общаться с этим человеком – никто больше не сможет нас прослушать – но это будет совсем не тот, с кем я думаю, что общаюсь. Это не слишком безопасно!

Для решения проблемы аутентификации, нам нужна Инфраструктура открытых ключей, позволяющая быть уверенным, что субъекты являются теми за кого себя выдают. Эта инфраструктура создана для создания, управления, распространения и отзыва цифровых сертификатов. Сертификаты – это те раздражающие штуки, за которые нужно платить, чтобы сайт работал по HTTPS.

Но, на самом деле, что это за сертификат, и как он предоставляет нам безопасность?

Сертификаты

В самом грубом приближении, цифровой сертификат – это файл, использующий электронной-цифровую подпись (подробнее об этом через минуту) и связывающий открытый (публичный) ключ компьютера с его принадлежностью. Цифровая подпись на сертификате означает, что некто удостоверяет тот факт, что данный открытый ключ принадлежит определенному лицу или организации.

По сути, сертификаты связывают доменные имена с определенным публичным ключом. Это предотвращает возможность того, что злоумышленник предоставит свой публичный ключ, выдавая себя за сервер, к которому обращается клиент.

В примере с телефоном, приведенном выше, хакер может попытаться предъявить мне свой публичный ключ, выдавая себя за моего друга – но подпись на его сертификате не будет принадлежать тому, кому я доверяю.

Чтобы сертификату доверял любой веб-браузер, он должен быть подписан аккредитованным удостоверяющим центром (центром сертификации, Certificate Authority, CA). CA – это компании, выполняющие ручную проверку, того что лицо, пытающееся получить сертификат, удовлетворяет следующим двум условиям:

1. является реально существующим;
2. имеет доступ к домену, сертификат для которого оно пытается получить.

Как только CA удостоверяется в том, что заявитель – реальный и он реально контролирует домен, CA подписывает сертификат для этого сайта, по сути, устанавливая штамп подтверждения на том факте, что публичный ключ сайта действительно принадлежит ему и ему можно доверять.

В ваш браузер уже изначально предзагружен список аккредитованных CA. Если сервер возвращает сертификат, не подписанный аккредитованным CA, то появится большое красное предупреждение. В противном случае, каждый мог бы подписывать фиктивные сертификаты.

image

Так что даже если хакер взял открытый ключ своего сервера и сгенерировал цифровой сертификат, подтверждающий что этот публичный ключ, ассоциирован с сайтом facebook.com, браузер не поверит в это, поскольку сертификат не подписан аккредитованным CA.

Прочие вещи которые нужно знать о сертификатах

Расширенная валидация

В дополнение к обычным X.509 сертификатам, существуют Extended validation сертификаты, обеспечивающие более высокий уровень доверия. Выдавая такой сертификат, CA совершает еще больше проверок в отношении лица, получающего сертификат (обычно используя паспортные данные или счета).

При получение такого сертификата, браузер отображает в адресной строке зеленую плашку, в дополнение к обычной иконке с замочком.

habr.com

Виды уязвимостей сайта: а ларчик просто открывался

Так что же представляют собой эти таинственные уязвимости, через которые и совершается большинство взломов? Сам термин «уязвимость» — это перевод английского слова vulnerability, он означает недостаток в коде сайта или программном обеспечении, используя который можно нарушить работу системы. Часто появление уязвимости бывает вызвано ошибками программирования, недостатками при проектировании сайта или ненадежными паролями. Уязвимости позволяют атакующему заставить интернет-приложение совершить действия, на которые у того нет прав.

К основным типам уязвимостей относятся следующие:

  • недочеты системы аутентификации и управления сессией;
  • небезопасные прямые ссылки на объекты;
  • небезопасная конфигурация;
  • утечка чувствительных данных;
  • отсутствие контроля доступа к функциональному уровню;
  • использование устаревших компонентов;
  • невалидированные редиректы (несанкционированные перенаправления);
  • кликджекинг (использование невидимых элементов).

Это далеко не полный перечень, к тому же постоянно появляются все новые и новые уязвимости. Мы сегодня расскажем только об одном типе уязвимости — небезопасной передаче данных и о ключевых видах атак, ей вызванных. Доля взломов сайтов, вызванных небезопасной передачей, например, в мобильных банковских системах, составляет 73%.[2]

Поскольку каждое действие в интернете — это обмен данными, то каждый раз, когда пользователь открывает нужный сайт или отправляет сообщение в соцсети, компьютер посылает запрос серверу и получает ответ. Обычно обмен идет по протоколу HTTP. Он устанавливает правила обмена данными, и именно с его помощью содержание сайта загружается на устройство.

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

Кража паролей

Первая причина взлома — кража пароля к аккаунту или административной части сайта. Это может случиться из-за вируса, устаревшей версии браузера, с которого введен пароль или даже из-за того, что пароль был слишком простым — хакеры без труда его подобрали.

Несмотря на вполне реальную опасность хакерского вмешательства, многие владельцы сайтов для аутентификации до сих пор используют открытый канал. В результате этого пароли без проблем перехватываются мошенниками, имеющими доступ к сети, в которой работают несознательные пользователи.

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

В августе 2014 года появилась информация о том, что хакерская группировка из России CyberVor похитила 4,5 млрд учетных записей. Логины и пароли были украдены с 420 000 веб-сайтов. Хакеры взломали множество ресурсов крупных компаний, но не упустили из виду и мелкие, и даже личные сайты. По оценке представителей американской компании, HoldSecurity, занимающейся информационной безопасностью, в руки к преступникам попала самая большая база учетных данных[4].

Взлом через хостинг-провайдера

Нередко взломы сайтов происходят по вине хостинг-провайдера. Во-первых, это может происходить по причине того, что на сервере установлено устаревшее программное обеспечение, которое взломать проще, чем новое ПО.

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

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

В начале этого года хакерская группировка взломала серверы подпольного хостинга Freedom Hosting II. Было скомпрометировано более 10 000 сайтов сети Tor и похищена база данных хостинга, включающая адреса электронной почты 381 000 пользователей[5].

Взлом CMS

Для управления контентом, структурой и дизайном сайта используются системы управления сайтом (Content Management System — CMS). Программирование, дизайн и поддержка сайта с использованием таких систем доступно даже для людей, имеющих очень смутное представление о программировании и вообще о web-архитектуре.

Но, как и все виды ПО, CMS содержит уязвимости, через которые ее можно взломать. Особенно эта угроза актуальна для популярных систем, поскольку их взлом дает возможность взломать сразу десятки тысяч сайтов по всему миру.

Используя уязвимости системы, хакеры могут размещать на сайте код, заражающий компьютеры посетителей вредоносными программами, публиковать контент сомнительного содержания или перенаправлять пользователя на другие сайты с таким контентом. Репутация сайта в этом случае серьезно страдает, из-за чего существенно уменьшается количество посетителей.

Взлом сайта через модули и компоненты вне CMS

Справедливости ради нужно заметить, что любую из указанных CMS в «чистом виде» взломать сложно даже хакерам очень высокого уровня. Опасность кроется во всевозможных расширениях — компонентах, плагинах, модулях, создаваемых сторонними разработчиками. Например, при установке компонента комментариев, в котором есть «дырка», хакер получит возможность вместо комментария залить на сайт специальный скрипт и совершить взлом.

SQL-инъекции

SQL-инъекция — это уязвимость, возникающая при недостаточной проверке и обработке передаваемых от пользователя данных. Она дает возможность хакерам модифицировать и даже выполнять не предусмотренные кодом программы запросы путем внедрения вредоносного кода в запрос к базе данных. Результатом является получение доступа к данным, к которым в обычных условиях доступ запрещен.

Использование этой уязвимости позволяет осуществлять кражу данных, их подмену или уничтожение и провоцировать отказ в обслуживании (DDoS). Есть подозрение, что именно с помощью SQL-инъекций осуществлялись громкие взломы последних лет, такие как утечка паролей с сайтов Yahoo, LinkedIn и eHarmony.

Отчет компании Akamai Technologies, Inc. показывает, что в 1 квартале 2016 года увеличение нападений, связанных с SQL-инъекциями, выросло на 87% по сравнению с предыдущим периодом. Около 60% атак приходится на сайты с медиа и развлекательным контентом, 30% — на сайты онлайн-услуг и 10% — на правительственные сайты[7].

Способов защиты от уязвимостей существует множество, в том числе и от каждого конкретного их вида. Это, прежде всего, использование лицензионного ПО, регулярное обновление CMS, отказ от простых паролей и небезопасных браузеров, установка межсетевого экрана. Одним из надежных средств защиты можно считать протокол https. О нем мы подробно поговорим ниже.

Как обеспечить безопасность веб-сайта, или Протокол HTTPS нас бережет

HTTPS — это некая защитная оболочка для обычного HTTP, позволяющая надежно шифровать передаваемую от пользователя к серверу и обратно информацию. Такое шифрование не допускает утечки данных, а значит, защищает сайт от взлома.

https: необходимость или рекомендация?

Переход на https вовсе не является жестким требованием для всех без исключения сайтов. Конечно, если сайт работает с платежными данными клиентов или любой другой персональной информацией, такой протокол должен быть установлен в обязательном порядке. Во всех остальных случаях переходить или не переходить на https решает только владелец сайта. Однако неприятности в случае взлома грозят любому сайту — рассылка спама, автоматический переход на сайты сомнительного содержания или даже полное уничтожение.

Кстати, использование https, как показывает практика, это серьезный плюс сайту со стороны клиентов и пользователей. Надежность соединения вызывает с их стороны больше доверия к самой компании. К тому же сайты с защищенным соединением лучше ранжируются поисковыми системами.

Как работает https

Как уже говорилось, протокол http, по которому осуществляется передача данных, практически ничем не защищен, и информация может стать легкой добычей хакеров. Для исключения возможности утечки в 1994 году был создан протокол https, использующий криптографическую систему SSL/TLS, которая шифрует все передаваемые данные и дает возможность установки защищенного соединения через незащищенный канал.

При установке соединения по протоколу https компьютер пользователя и сервер сначала генерируют некий секретный ключ, а затем уже обмениваются информацией, при этом шифруя ее с помощью данного ключа. Ключ создается заново при каждом сеансе связи, так что перехватить и подобрать его практически невозможно — он представляет собой число с количеством знаков более ста. Для полной надежности используется еще и цифровой сертификат для идентификации сервера. Первое, что делает браузер при установке соединения по https, — проверяет подлинность сертификата. Только после ее подтверждения начинается обмен данными.

Как перевести сайт на https

Перевести сайт на протокол https не так сложно, как может показаться. Процесс перехода состоит всего из нескольких шагов.

  • Шаг 1. Получение и настройка сертификата. Получить сертификат можно в центрах сертификации за отдельную плату, но существуют и бесплатные варианты. Для небольших фирм они могут быть вполне приемлемы, но крупные компании обычно отдают предпочтения платным сертификатам, которые отличаются расширенной аутентификацией, возможностью включения субдоменов и т.д. Кроме того, бесплатные сертификаты иногда увеличивают время передачи данных в несколько раз из-за особенностей их обслуживания удостоверяющими центрами. И что очень важно, бесплатный сертификат не подойдет для сайтов с приемом онлайн-платежей, поскольку неизвестно, кто является владельцем такого сайта. Кстати, за услугу перевыпуска некоторых бесплатных сертификатов или внесения в них каких-либо изменений все равно придется заплатить.
    Затем сертификат нужно настроить. Цель настройки — переадресация всех запросов с http на https.
  • Шаг 2. Работа с внутренними ссылками. Полные ссылки внутри сайта придется заменить на относительные с помощью скриптов. Поскольку после перехода прокол http не заменится на https автоматически, может возникнуть ситуация с загрузкой смешанного контента. Одновременное действие обоих протоколов не обеспечивает полноценной защиты и может привести даже к тому, что сайт совсем перестанет работать.
  • Шаг 3. Переадресация. После установки сертификатов сайт станет доступен по двум адресам, из которых оставить нужно только тот, который начинается с https. Для этого нужно настроить прямой редирект «301» с http на https. Делается это на сервере, но можно и в htaсcess, хотя последний вариант хуже. После этого даже http-запросы пользователей будут переадресовываться на сайт с новым протоколом.
  • Шаг 4. Внесение изменений в файл robots.txt. Для того чтобы поисковые роботы могли обнаружить сайт с измененным протоколом, нужно указать этот протокол в файле robots.txt.
  • Шаг 5. Включение HTTPS Strict-Transport-Security. Этот процесс индивидуален для каждого сервера, так что универсальных рекомендаций не существует. Для облегчения задачи можно обратиться к специалистам, которые разрабатывали сайт. И в заключение необходимо включить Secure Cookies — с этого момента информация на ресурсе надежно защищена.

Как выбрать сертификат безопасности для сайта (TLS/SSL)

При выборе сертификата можно пойти двумя путями. Если у вас небольшой офлайн-бизнес или личный блог, и вы просто хотите донести информацию о своей компании до потенциальных клиентов, используйте Domain Validation SSL. Этот вид верификации не позволит защищать субдомены и вести финансовые операции через сайт. Зато сертификат делается быстро, и заработает он сразу после того, как вы подтвердите владение доменом. Это можно сделать несколькими способами: через e-mail, через запись в DNS и через хэш-файл. Стоимость таких сертификатов бывает относительно невелика, например, всего 610 рублей в год[8].

Для владельцев сайтов, на которых предполагаются финансовые онлайн-операции необходима установка сертификатов типа Business Validation. Такой вид сертификата надежнее, поскольку подтверждает не только владение доменом, но и связь компании с сайтом. Для верификации нужно отправить в верификационный центр пакет документов и принять звонок на корпоративный номер. Все сертификаты Business Validation делятся на несколько видов:

  • Extended Validation SSL — сертификаты с расширенной проверкой, обычно используются банками, платежными системами, крупными интернет-магазинами — теми, кто работает с большими объемами денег.
  • Wildcard SSL — защищает сам сайт и его поддомены. Используется в том случае, если предполагается несколько поддоменов с разной региональной привязкой.
  • SAN SSL — поддерживает внешние и внутренние альтернативные доменные имена.
  • CodeSigning SSL — подтверждает безопасность кодов и программных продуктов с сайта, пригодится разработчикам приложений.

Но какой бы сертификат не был выбран, сначала необходимо сгенерировать запрос на его получение, содержащий всю информацию о хозяине домена и открытый ключ. Запрос направляется в центр верификации. В результате выдается сертификат и файл с ключом, который ни в коем случае не должен попадать в открытый доступ. Сертификаты такого типа могут стоить несколько сотен тысяч рублей, например, приблизительная стоимость Symantec Secure Site Wildcard — от 281 967 рублей в год[9].

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

www.kp.ru

Принцип работы соединения по HTTPS протоколу

HTTPS представляет собой защищенный вариант HTTP протокола (hypertext transfer protocol – протокола передачи гипертекста), который первоначально использовался для передачи гипертекстовых документов. Со временем его стали применять и для передачи любых данных через Интернет. HTTP построен на принципе отношений «клиент- сервер»:

  • клиент инициирует соединение, для чего посылает запрос серверу;
  • сервер получает запрос, обрабатывает его и отправляет клиенту полученные результаты.

В HTTP данные передаются без шифрования, в открытом виде. На пути от клиента к серверу информация проходит через десятки и сотни узлов, и доступ к ней может получить кто угодно на любом этапе передачи. То же самое может случиться при подключении к Интернету через незащищенную сеть Wi-Fi в общественном месте – баре, клубе, на улице или в метро.

От постороннего доступа необходимо защищать банковские, коммерческие, юридические и любые персональные данные – паспортные, медицинские, налоговые, судебные и пр.

В этих случаях для передачи конфиденциальной информации используется соединение HTTPS (HTTP Secure) – безопасная версия стандартного HTTP соединения. Оно подходит для любых устройств с выходом в Интернет – планшетов, мобильных телефонов, смартфонов, настольных ПК и ноутбуков. HTTPS не требует настроек со стороны пользователя – он автоматически начинает работать в нужный момент.

HTTPS поддерживают все современные браузеры, в том числе Google Chrome, Mozilla Firefox, Opera, Internet Explorer и Safari.Если сайт использует https-протокол – это видно в адресной строке браузера. Например, в Chrome:

протокол в браузере

Использование протокола HTTPS, области применения

Не всегда есть необходимость шифровать передаваемые данные. При шифровании увеличивается объем передаваемой информации, поэтому нужна достаточно большая скорость Интернета и пропускная способность канала. В каких случаях действительно необходимо использовать защищенное соединение, а когда без этого можно обойтись?

Личные блоги, новостные и любые справочные сайты могут обойтись без HTTPS протокола. Он необходим там, где есть:

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

Или вы хотите купить подарок в интернет-магазине. Для оплаты вводите номер банковской карты, срок ее действия, фамилию и имя держателя, код CVV. Вся эта информация ни в коем случае не должна попасть в чужие руки, поэтому она шифруется и передается только через HTTPS соединение. Если сайт онлайн-магазина не поддерживает HTTPS, совершать в нем покупку опасно – можно лишиться всех денег на счету.

Как правило, браузеры сами сообщают пользователю об отсутствии безопасного соединения или сертификата безопасности у владельца сайта. На экране появляется сообщение, согласны ли вы перейти на небезопасную страницу:

незащищенное соединение

Аналогичные требования по защите информации для удаленных сотрудников, которым нужен доступ к внутренним ресурсам компании – например, почтовому серверу, финансовым отчетам, системе управления. С начала сессии ваше устройство обменивается данными с сервером по незащищенному HTTP протоколу. Как в этом случае добиться безопасного соединения? Здесь на помощь приходит многоступенчатое шифрование передаваемых данных через криптографический протокол SSL/TLS. SSL можно сравнить с «фантиком», в который заворачивают данные HTTP, чтобы скрыть их от посторонних.

SSL сертификат — как работает SSL шифрование

Протокол SSL/TLS помогает двум незнакомым друг с другом пользователям Интернета установить защищенное соединение через обычный, незащищенный канал. С помощью математических алгоритмов оба пользователя – клиент и сервер – договариваются о секретном ключе, не передавая его напрямую через соединение. Даже если кто-то сумеет подключиться к соединению и перехватить все передаваемые данные, расшифровать их ему не удастся.

Протокол SSL использует многослойную среду: с одной стороны от него находится протокол программы-клиента (например, IMAP, HTTP, FTP), а с другой – транспортный TCP/IP. Для SSL шифрования используются симметричные и ассиметричные ключи, полученные с помощью различных математических моделей.

Теперь представьте, что в коробку вы положили код от тайного шифра, и адресат его получил. С этой минуты вы можете посылать друг другу зашифрованные сообщения по открытому соединению – даже если они попадут в чужие руки, расшифровать их без ключа не получится.

При установке безопасного соединения по протоколу HTTPS ваше устройство и сервер договариваются о симметричном ключе (его еще называют «общим тайным ключом»), после чего обмениваются уже зашифрованными с его помощью данными. Для каждой сессии связи создается новый ключ. Подобрать его почти. Для полной защиты не хватает только уверенности, что ваш собеседник на другом конце провода – действительно тот, за кого себя выдает.

Здесь в игру вступают цифровые сертификаты. Их задача – подтвердить, что на другом конце провода находится реальный адресат, управляющий указанным в сертификате сервером. Выдают такие сертификаты специальные центры. Сертификат содержит название компании и электронную подпись, которая подтверждает его подлинность. Именно ее проверяет браузер в момент установки безопасного HTTPS соединения.

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

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

ev сертификат

www.ipipe.ru

Плюсы использования HTTPS

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

хт-1.png

Как работает HTTPS

На веб-страницах, использующих HTTPS, неприкосновенность информации обеспечивается с помощью протокола SSL/TLS, который предусматривает три основных уровня защиты:

  • Шифрование передаваемых данных во избежание их перехвата. Благодаря этому злоумышленники не смогут узнать, какой информацией обмениваются посетители сайта, а также отследить их действия на других страницах или получить доступ к их данным.
  • Сохранность данных. Любое изменение или искажение передаваемых данных будет зафиксировано независимо от того, было оно сделано намеренно или нет.
  • Аутентификация гарантирует, что посетители попадут именно на тот сайт, который им нужен, и защищает от атаки посредника.

Как это работает:

В ходе установки соединения на основе протокола HTTPS генерируется случайный секретный ключ, который будет известен только серверу и компьютеру. Такой ключ будет создаваться заново при каждом сеансе. В ключе содержится более 100 символов, а значит, подобрать его случайным образом практически невозможно. При помощи этого ключа шифруется вся передаваемая информация.

В качестве дополнительного элемента, обеспечивающего безопасность доступа по протоколу HTTPS, является цифровой SSL-сертификат, используемый для идентификации сервера сайта. Его выдает центр сертификации, который проверяет, действительно ли указанный веб-адрес принадлежит организации, и таким образом обеспечивает защиту посетителей от атак с перехватом. В сертификате содержится информация о его владельце сайта и присутствует цифровая подпись, которая используется для подтверждения подлинности.

Передача данных между сайтом и пользователем начнется, только если цифровой сертификат прошел проверку подлинности.

Когда сайту необходимо использовать HTTPS

Все современные браузеры поддерживают протокол HTTPS, а значит, пользователь всегда будет в курсе, защищено соединение или нет и можно ли доверить сайту информацию, к примеру, о его банковской карте.

хт-2.png

По данным за ноябрь 2017, более 286 тысяч сайтов из списка «Alexa TOP 1M», куда входит 1 млн сайтов из разных стран мира, используют по умолчанию доступ по протоколу HTTPS.

Итак, каким сайтам следует использовать протокол HTTPS:

  • сайты финансовых учреждений, например, банков,
  • электронные платежные системы,
  • сайты, которые обрабатывают персональные данные пользователей,
  • сайты, которые хотят повысить уровень доверия пользователей.

Как сайту перейти на HTTPS

Переход сайта с HTTP на HTTPS происходит в несколько этапов.

Получение SSL-сертификата

Есть разные типы SSL-сертификатов в зависимости от типа проверки данных, которые нужно предоставить:

  • С проверкой домена,
  • С проверкой организации,
  • С расширенной проверкой организации.

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

Также сертификат следует выбирать исходя из следующих данных:

  • Одиночный сертификат для одного защищенного источника (например, www.example.com).
  • Многодоменный сертификат для нескольких известных защищенных источников (например, www.example.com, cdn.example.com, example.co.uk).
  • Сертификат-шаблон для защищенного источника с несколькими динамическими субдоменами. (например, a.example.com, b.example.com).

Получать сертификат следует в проверенном центре сертификации, который может оказывать техническую поддержку.

После получения сертификата необходимо его корректно настроить и проверить работоспособность в разных браузерах.

Технические нюансы

  • Важно «сообщить» поисковым системам о новой HTTPS-версии сайта через Яндекс.Вебмастер и Search Console.
  • При необходимости можно использовать 301 редирект, чтобы перенаправлять пользователей и поисковые системы на страницу с поддержкой HTTPS.
  • HTTPS-страницы должны быть доступны для индексации и сканирования в robots.txt.
  • На сайтах, использующих протокол HTTPS, рекомендуется применять технологию HSTS. В этом случае браузер будет запрашивать страницы HTTPS, даже если пользователь введет http в адресной строке.

Рекомендации поисковых систем по переезду сайта на HTTPS:

  • Рекомендации Яндекса,
  • Рекомендации Google.

www.likeni.ru

26.07.2018 Время прочтения: 4 минуты

Поскольку любая активность в сети подразумевает передачу каких-либо данных (то есть всегда есть какой-то запрос к серверу и ответ от него), то нужны правила такой передачи, а также канал и транспортный механизм. Всё это в себе совместил протокол HTTP – он стал стандартом, который используется повсеместно. Именно HTTP позволяет браузеру ПК или гаджета загрузить и отобразить содержимое веб-ресурса.

Но у HTTP есть один (большой) недостаток: никакие передаваемые данные не защищаются и не шифруются. Если на пути к серверу и обратно есть точка, которую контролирует злоумышленник, то он легко их перехватит. Такой расклад надо было менять, поэтому на смену пришел защищенный протокол HTTPS:

  • HTTPS – это модифицированный HTTP, обеспечивающий криптозащиту данных. Информация, которую вы передаете, защищена от третьих лиц.
  • Все случайные и намеренные изменения или искажения данных, которые пользователь передает, фиксируются.
  • Наличие HTTPS – фактор продвижения сайта в поисковой выдаче в Google.

Каждый раз, когда пользователь заходит на сайт с HTTPS или переходит по страницам этого сайта, этот протокол формирует случайный секретный код. Подобрать его невозможно – в нем более 100 символов. Этот код известен только серверу и компьютеру пользователя. Благодаря этому ключу шифруются все передаваемые данные, т.е. на основе этого ключа создаются ключи для всех данных. Поэтому браузер и сервер могут представить отобразить сообщение или перевести сумму.

Если вы оплачиваете пиццу онлайн через сайт на HTTP, ваши платежные данные передаются по открытому каналу, их можно перехватить. Если сайт на HTTPS, то данные зашифрованы.

Защищенный протокол HTTPS

Дополнительная составляющая защиты – цифровой сертификат, который нужен, чтобы идентифицировать сервер ресурса. Сертификат сам по себе пользователю не нужен, но если сайт или сервер хочет установить соединение с пользователем, сертификат необходим, чтобы:

  1. Подтвердить, что лицо, на которое он выпущен, существует на самом деле (там есть цифровая подпись).
  2. Доказать, что это лицо действительно управляет сайтом / сервером.

Цифровой сертификат – критически важный документ для сайта, его выдают центры сертификации. Подлинность сертификата – первое, что проверяет браузер при соединении с сайтом на HTTPS, и только в случае, если сертификат действителен, начинается обмен данными.

Наличие HTTPS крайне важно для ресурсов, которые обрабатывают различную приватную информацию, например, для платежных систем, банковских сайтов и вообще сайтов, где пользователь вносит персональную информацию.

  • DV или Domain Validated (с проверкой домена) – сертификат, доступный физлицам и организациям, которые защищает данные, но не является доказательством того, что сам владелец сайта – проверенное лицо, которому можно доверять. Подходит для личных сайтов (блог, портфолио, визитка).
  • OV или Organization Validated (с проверкой организации) – доступен только организациям (коммерческим, некоммерческим, государственным), проверяет документы существования юридического лица, а также кому принадлежит домен. Подходит интернет-магазинам, поставщикам услуг.
  • EV SSL – Extended Validation SSL (с расширенной проверкой организации) – визуально выделяется в браузере, поскольку такой домен прошел многоэтапную тщательную проверку. Поэтому его используют онлайн-ресурсы банков, платежных сервисов и крупные сайты.

Как мы написали выше, наличие HTTPS для Google – сигнал к более высокому ранжированию. Позиция компании по этому вопросу предельно прозрачна: Google хочет привести весь интернет к «безопасному стандарту» – наличие HTTPS должно стать правилом, об исключениях из которого нужно предупреждать пользователей. Именно поэтому Google убрал положительный сигнал о защищенном сайте и стал вместо этого сообщать о незащищенных ресурсах.

Поэтому если вы продвигаете свой сайт на http в Google, переезд на HTTPS необходим.

Яндекс по этому вопросу только собственным примером демонстрирует предпочтение: все сервисы Яндекса – на HTTPS. Яндекс утверждает, что сайты на обоих протоколах ранжируются на равных условиях, при этом отмечает, что стоит ориентироваться на безопасность пользователя и его данных. Возможно, что переход к единому безопасному стандарту – лишь вопрос времени.

seo.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.