- Суть проблеми
- Рішення
- UPDATE: Що робити, якщо потрібно дозволити протокол HTTP тільки для конкретного IP?
Розпал дня. Пальці набивають код, очі напружено вдивляються в монітор, неподалік гуде принтер, випльовуючи папір, цокають каблучки, перемовляються бухгалтера, пахне міцною кавою. Звичайна робоча обстановка.
І тут прибігає сисадмін. Очі на викотив, самого трусить.
- Терміново! - каже, - треба заборонити на сайті компанії протокол HTTP!
- Чого ?, - піднімаю очі від рівних рядків на екрані.
- Юристи подзвонили! Кажуть потрібно залишити тільки HTTPS!
Суть проблеми
В принципі, все до цього йшло. Відразу скажу, що проблема вирішується трьома рядками в файлі .htaccess, але про це трохи нижче.
А суть в тому, що в нашій країні є закон про захист персональних даних. Мало того, що ті хто їх збирають (наприклад, інтернет-магазини, для оформлення замовлення) повинні попереджати покупця. Попереджати про те, що його ПІБ, адреса, паспортні дані (якщо потрібно), телефонний номер, e-mail і т.п. відправляються не просто так, а для обробки!
Мені завжди здавалося, що це взагалі-то логічно. Інакше навіщо я все це вписую? Вже точно не для того, щоб воно пішло в нікуди. Але немає! Закон вимагає попереджати.
Але і це ще не все! Всі надіслані дані повинні відправлятися по шифрованому протоколу (HTTPS). Як то кажуть - припливли.
Рішення
Подивившись юридичним викрутасами, зайшов на сайт, відкрив файл .htaccess і під рядком RewriteEngine On, додав ще три. Ось вони:
RewriteCond% {HTTPS} off RewriteCond% {HTTP: X-Forwarded-Proto}! Https RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301]
Усе. Фокус спрацював, оскільки протокол HTTPS вже був встановлений. Просто тепер сайт буде доступний тільки по ньому і не буде доступний по протоколу HTTP. В іншому, нічого не змінилося.
До речі, якщо ви шукали як відключити на сайті протокол HTTP (залишивши тільки HTTPS) і вам допоміг цей рецепт, не соромтеся в подяку заслати мені трохи на чай з печивом.))
Допомогло? Зайшли Админу на чай.
Що стосується самого HTTPS як явища ...
Мене в цій ситуації напружує лише одне - нав'язування HTTPS всім власникам сайтів. Воно йде хоч і поступово, але неухильно.
Чому напружує? Тому, що сертифікат для цього протоколу коштує грошей. Це близько 5000 руб (і вище) в рік з ніфіга.
Тобто до плати за хостинг і домени додасться ще й ця. Якщо витрати на перший і другий, цілком обгрунтовані, то оплата сертифіката - це «продаж повітря».
Моя буйна фантазія запросто придумає ще десяток подібних речей, за які можна зобов'язати платити веб-майстрів. Наприклад, податок на сайт, або ліцензія на використання трафіку.
Це тільки здається нереальним, а за фактом цілком ... Було б бажання. І все це, само-собою, буде виключно для блага власників та відвідувачів сайтів.
Коротше, без коментарів.
UPDATE: Що робити, якщо потрібно дозволити протокол HTTP тільки для конкретного IP?
Потрібно до вже згаданим трьом рядкам додати ще одну. При тому додати її перед рядком з RewriteRule. Ось вона.
RewriteCond% {REMOTE_ADDR}! 92.57.214.12
Ви запитаєте: Навіщо відкривати HTTP-протокол для конкретного IP? Адже HTTPS прогресивніше, защищеннее, сучасніше, понтово в коні-решт.
Справа в тому, що до вашого сайту можуть звертатися якісь ваші програми, парсери і т.п., які не вміють спілкуватися з HTTPS. Наприклад 1C Бухгалтерія.
Звичайно її в підсумку можна налаштувати, але не факт, що ви це зможете своїми силами або швидко, а працювати треба ось уже прямо зараз. На цей випадок вас і виручить чарівна рядок.
Природно, замість 92.57.214.12 потрібно вказати потрібний вам IP, з якого будете відправляти запити.
Чого ?Інакше навіщо я все це вписую?
Допомогло?
Чому напружує?
UPDATE: Що робити, якщо потрібно дозволити протокол HTTP тільки для конкретного IP?
Ви запитаєте: Навіщо відкривати HTTP-протокол для конкретного IP?