Ключовим моментом у забезпеченні безпеки WordPress-сайту є встановлення правильного SSL-сертифіката. Це дасть можливість користувачам обмінюватися інформацією з вашим сайтом через безпечний шифрований канал:

Щоб визначити, яку саме інформацію потрібно шифрувати і переконатися, що ця інформація залишає сайт тільки зашифрованою, потрібно виконати певну роботу. Але це і не так вже складно, якщо цілі і вигоди цієї роботи ясні.

Що таке SSL?

Протокол SSL є стандартом в обміні зашифрованою інформацією між веб-сервером і браузером. Не вдаючись у деталі, пояснити це можна так: SSL встановлює довірчі відносини між сервером і клієнтом.

Коли довіра встановлено, сервер може зашифрувати дані (наприклад, веб-сторінку) таким чином, що розшифрувати ці дані може лише клієнт. Необхідність такого шифрування виникає з того факту, що Інтернет – це мережа загального користування, і інформація, що пересилається між двома точками, може на певних етапах бути доступна іншим учасникам мережі.

Ми пересилаємо шифровані дані, щоб переконатися, що їх може зрозуміти тільки наш співрозмовник. Всі інші сторони, спробувавши прочитати їх, отримають дурниці, нічого не значущий сміття. У нашому випадку передати дурницю краще, ніж передати дані кредитної картки, листи, паролі або іншу приватну інформацію.

Використання SSL вимагає від сайту установки спеціального сертифікату, який однозначно ідентифікує свого власника. Такий сертифікат купується на певний строк у спеціальних вендорів. Більшість браузерів сигналізують про наявність валідного SSL-сертифіката іконкою із зображенням замку:

Використання SSL і HTTPS WordPress

SSL особливо необхідний сайтів, що займаються електронною комерцією і мають справу з даними платежів, кредитних карток і т. д.

Я не буду розповідати про процесі придбання та встановлення SSL-сертифіката, так як він відрізняється у різних провайдерів сертифікатів і хостерів. Хороший хостинг-провайдер обов’язково посприяє вам у придбанні сертифіката та налаштування веб-сервера.

Коли сертифікат придбаний і сервер налаштований на його використання, будь-який користувач зможе переглянути сторінки вашого сайту, через SSL. Я кажу «зможе», а не «повинен буде», так як на цьому етапі налаштування SSL на сайті не закінчена. Щоб перенаправляти користувачів до безпечного з’єднання, необхідно виконати певні налаштування WordPress.

Коли ми говоримо «використовувати SSL», ми маємо на увазі, що обмін інформацією між сайтом і відвідувачем відбувається через HTTPS-протокол замість звичайного HTTP. HTTPS шифрує дані HTTP за допомогою протоколу SSL, завіряє їх сертифікатом і відправляє через окремий порт, але це ще не все.

Коли використовувати HTTPS

Ви можете налаштувати свій сайт таким чином, щоб використовувати SSL при адмініструванні, перенаправляти на HTTPS всіх зареєстрованих користувачів чи видавати певні сторінки і шляху на сайті лише в зашифрованому вигляді.

Є два підходи до визначення необхідності використання шифрування на сайті. Один полягає в тому, що потрібно шифрувати тільки потенційно чутливу інформацію, інший передбачає шифрування всього сайту.

Нещодавно Google розповів, що сайти, що підтримують HTTPS для анонімних користувачів, мають більш високі позиції в пошуковій видачі.

Це означає, що використання HTTPS можна вважати частиною SEO-стратегії, а не тільки заходом безпеки. Також тотальне шифрування усуває людські помилки у визначенні конфіденційності тієї чи іншої інформації.

Недоліком такого підходу є те, що HTTPS працює повільніше, ніж HTTP. Кожна порція даних повинна зашифровываться на одному кінці і розшифровуватися на іншому. Це додає навантаження на процесори сервера і клієнта і вносить затримки обмін інформацією.

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

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

Як я вже згадував, фінансова інформація і паролі відносяться до найбільш чутливим даними і потребують SSL-шифрування. Інші типи даних, наприклад, медичні карти, також потрапляють в цю категорію. Якщо ви реалізуєте сайт, зберігає такі дані, проконсультуйтеся з юристами, перш ніж вибрати протокол доступу до них.

Установка SSL вручну

В ядрі WordPress є константа, яку ви можете визначити у файлі wp-config.phpщоб обмежити роботу адміністратора безпечним з’єднанням. Ця константа – FORCE_SSL_ADMIN – вимагає наявності на сервері валідного SSL-сертифіката. За замовчуванням ця функція вимкнена. Щоб включити її, додайте в файл wp-config.php наступний код:

define( ‘FORCE_SSL_ADMIN’, true);

Існує також просте рішення, яке здійснює обов’язкове шифрування всього фронтенда. Ви можете з ним детально ознайомитися в цій статті Кодексу WordPress.

Якщо особисто я вирішу реалізувати на своєму сайті більш складну схему використання SSL, я, швидше за все, настрою це за допомогою плагіна. Про це ми зараз і поговоримо.

Використання плагіна WordPress HTTPS

Є відмінний безкоштовний плагін – WordPress HTTPS (SSL), який дуже легко дозволяє здійснювати найскладніші налаштування SSL.

Цей плагін давно не оновлювався і, як видно з каталогу плагінів, тестувався тільки для WordPress версії 3.5.2, але зі свого досвіду можу сказати, що він відмінно працює з версіями 3.9 і 4.0.

Цей плагін дозволяє задати глобальні налаштування використання SSL на вашому сайті аналогічно використанню констант wp-config.php. Якщо ж ви не хочете використовувати шифрування на всьому сайті, він допоможе встановити примусове використання HTTPS для окремих посад, сторінок або розділів.

Процес установки цього плагіна дуже простий. Опції, що відносяться до всього сайту або сайтів, якщо у вас мультисайтовая інсталяція WordPress), можна налаштовувати на сторінці плагіна в панелі управління.

З опціями безпеки окремих сторінок і постів можна працювати за допомогою метабокса в редакторі публікацій. Це зручно, якщо потрібно забезпечити доступ до певних сторінок.

Безпека сайту – це не тільки SSL!

Шифрування трафіку важливо для безпеки сайту, але цим безпека не вичерпується. Так, SSL не дасть перехопити зловмиснику чужий пароль, але той може його вгадати.

Політика паролів, своєчасне оновлення WordPress, плагінів і тим, періодичне сканування на наявність шкідливих скриптів, обмеження доступу до портів – все це однаково важливо для безпеки вашого веб-сайту.

Всі заходи безпеки повинні працювати в комплексі. Якщо, приміром, троян проник на сайт через shell, сайт вже скомпрометований – не важливо, що його трафік при цьому шифрується. Всі потенційні проблеми повинні бути закриті відповідними плагінами (WordFence, iThemes Security) або сервісами (Sucuri).

Установка SSL-сертифіката та налаштування HTTPS – лише одна ланка в ланцюгу заходів, спрямованих на забезпечення безпеки WordPress-сайту. Сподіваємося, що наша стаття допоможе для вас цей крок.

Переклад статті «How To Use SSL & HTTPS With WordPress» був підготовлений дружною командою проекту Сайтостроение від А до Я.