Сегодня к Интернету подключено больше людей, чем когда-либо прежде, и из большего числа мест.
Мы связаны с нашими ноутбуками, телефонами и планшетами, а вскоре, возможно, и с персональными устройствами и аксессуарами. Мы получаем доступ к Интернету из ненадежных, а иногда даже враждебных сетей. Поскольку большая часть нашей жизни проходит в Интернете, крайне важно принять меры для защиты наших данных и данных наших пользователей.
Прежде всего, мы, разработчики, должны понимать необходимость и практичность SSL.
Что такое SSL? Это расшифровывается как Secure Sockets Layer и представляет собой криптографический протокол, предназначенный для обеспечения безопасности связи через Интернет. Он гарантирует конфиденциальность посредством шифрования и целостности, чтобы предотвратить слежку или вмешательство в ваше интернет-соединение. У SSL есть свои недостатки, но это ведущий и, по сути, единственный способ обеспечить любую безопасность передачи данных в Интернете.
По данным SSL Pulse , год назад у нас было около 15% внедрения SSL; сейчас мы достигли более 50% внедрения.
Две аббревиатуры:
TLS: для большинства целей и задач аналогичен SSL. Если быть точным, SSL 3.1 был переименован в TLS, а TLS — это название стандарта IETF. Но они взаимозаменяемы!
HTTPS: это HTTP поверх SSL, просто сочетание возможностей безопасности SSL и стандартного HTTP. Сначала происходит рукопожатие клиент-сервер с использованием криптографии с открытым/закрытым ключом для создания общего ключа, который используется второй частью протокола SSL для шифрования связи.
Общение в Интернете может показаться безопасным, быстрым и быстрым. Такое ощущение, что мы говорим напрямую с сайтом. Но на самом деле это не прямая связь. Наша связь осуществляется через Wi-Fi-роутер, интернет-провайдера и, возможно, другие промежуточные прокси-серверы между вашим устройством и веб-сайтом. Без HTTPS все наши сообщения передаются в виде обычного текста.
Проблема в том, что пользователи редко вводят полный URL-адрес с указанием HTTPS или нажимают на ссылку, использующую HTTP. Хуже того, можно организовать атаку «человек посередине» и заменить HTTPS на HTTP. Инструмент под названием SSLstrip, представленный в 2009 году, делает именно это. Firesheep с 2010 года просто прослушивал открытые сети Wi-Fi на предмет отправки файлов cookie в открытом виде: это означало, что вы могли подслушивать чат или войти в чью-либо учетную запись Facebook.
Но SSL (относительно) дешев, быстр и прост в развертывании (см. ssllabs.com и книгу Ильи Григорика «Высокопроизводительная браузерная сеть»). Для некоммерческого использования вы даже можете получить бесплатные сертификаты на сайте Startssl.com ! Закрепление открытого ключа предназначено для того, чтобы дать операторам веб-сайтов возможность ограничить круг центров сертификации, которые могут фактически выдавать сертификаты для своих сайтов.
«В январе этого года (2010 г.) Gmail перешел на использование HTTPS для всего по умолчанию… Для этого нам не пришлось развертывать дополнительные машины и специальное оборудование. На наших производственных клиентских машинах SSL составляет <1% нагрузки на процессор, < 10 КБ памяти на одно соединение и < 2 % сетевых ресурсов…
Если вы перестанете читать сейчас, вам нужно запомнить только одно: SSL больше не требует больших вычислительных затрат».
– Разгон SSL , Адам Лэнгли (Google)
И наконец, пара ошибок, которые мы видим чаще всего:
- Смешанный контент: сайты, использующие как HTTP, так и HTTPS. Ваш пользователь будет раздражен, потому что ему придется нажать кнопку разрешения для загрузки контента. (Chrome и Firefox фактически запрещают смешанный контент из iframe.) Убедитесь, что все ваши ресурсы на странице HTTPS загружаются по HTTPS, используя относительные или привязанные к схеме URL-адреса, например
<style src="//foo.com/style.css">
- Небезопасные файлы cookie: отправляются в открытом виде через HTTP-соединение. Избегайте этого, установив атрибут Secure в заголовках файлов cookie. Вы также можете использовать новый заголовок «Strict Transport Security», чтобы потребовать SSL Transport Security (HSTS).
Вынос
- Если вы заботитесь о конфиденциальности и целостности данных своих пользователей, вам необходимо использовать SSL. Это быстрее, проще и дешевле, чем когда-либо.
- Избегайте типичных ошибок реализации, таких как ошибки смешанного содержимого или неверная установка правильных битов заголовка HTTP.
- Используйте относительные URL-адреса или относительные URL-адреса схемы.
- Ознакомьтесь с некоторыми новыми интересными вещами, такими как HSTS и закрепление сертификатов.
Слайды: Есть SSL?