Примушуйте HTTPS на всіх сторінках у передній частині, а не лише на замовлення / рахунок


10

У вихідний час я включив Використовувати захищені URL-адреси у фронте . Але користувачі все ж можуть відвідувати мій сайт через незахищені URL-адреси, за винятком сторінок оформлення замовлення / облікових записів.

Я хочу застосувати захищені URL-адреси на всіх сторінках. Що я зараз роблю - це змінити незахищену базову URL-адресу на "https: // ...."

Здається, працює. Якщо користувачі використовують HTTP, вони будуть переспрямовані на https. Але мені цікаво, чи правильно це зробити. Якісь побічні ефекти?


я чув, що правильним способом є перекриття безпечного маршруту в config.xml

Відповіді:


16

Відповідь за замовчуванням: встановіть незахищену базову URL-адресу на https: // залежно від налаштувань, цього вже достатньо для переадресації, якщо користувачі намагаються використовувати http: //

Можливо, переадресація на рівні веб-сервера краще, оскільки це дозволяє уникнути запитів, які спочатку проходять через php.

І якщо ви хочете справжнього ідеально безпечного рішення, вам слід додати свій веб-сайт на https://hstspreload.appspot.com/ . Але обережно з цим, якщо вам потрібно змінити сертифікат, це може спричинити великі проблеми. Нехай ваш хостер потурбується про цю частину.


Навіщо змінювати сертифікат? HSTS "тільки" робить, що браузер тепер доступ до сторінки лише через HTTPS. Я зробив модуль для цього: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt

1
Можливо, я це трохи змішав із закріпленням сертифіката. Думав, що попередня завантаження також міститиме відбитки пальців для сертифіката
Flyingmana

2
@Flyingmana: Якщо ви подивитесь на фактичний список попереднього завантаження HSTS у джерелі Chromium , переважна більшість записів не містить відбитків сертифікатів чи нічого подібного, а лише доменне ім’я.
Лей Бренецький

4

ви можете зробити це за допомогою .htaccess в апачі. Використовуйте ці рядки:

############################ Force SSL ############################
RewriteCond %{HTTP_HOST} !^localhost$
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############################ Force SSL ############################

4

Для тих, хто натрапляє на це (як я)

Не використовуйте htaccess. Під адміністратором goStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

Не потрібно редагувати жодні файли.


1
Хороший час. відповів вчора. Я вважаю, що це повинно бути відповіддю ... принаймні, воно змушує https на фронтенд і адмін для мене, не торкаючись апаша. На даний момент обрана відповідь дозволяє HTTPS, але ця відповідь "примушує" https.
Джо Флетчер

1
Це саме те, що запитуючий сказав, що вони намагалися, і що це не спрацювало
Дом

2

Я спробував попередні рішення, і, хоча вони, здавалося, спрацювали, вони заблокували мене з адміністративної панелі (не зовсім розумію причину).

Щоб знову потрапити на панель адміністратора, мені довелося потрапити в phpmyadmin та потрапити до таблиці бази даних core_config_data та змінити обидва шляхи : web / secure / use_in_adminhtml та web / unsecure / base_url знову повернутися на панель адміністратора. І не забудьте очистити папку кешу, якщо вам доведеться вносити зміни в базу даних ...

Тому я застосував наступне рішення .htaccess, яке дозволило мені також увійти до адміністратора

# AFTER THIS SECTION
############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# PUT THIS 
############# ALL PAGES HTTPS #################
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !/admin/
RewriteCond %{REQUEST_URI} !/downloader/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
############# ALL PAGES HTTPS #################

Сподіваюся, це комусь допоможе


0

Більшість підходів щодо .htaccess дозволить перенаправляти більшість сторінок додому, коли доступ до них здійснюється через http.

Приклад: http://www.mystore.com/productA.html => http://www.mystore.com/

замість https://www.mystore.com/productA.html

Я вирішив це за допомогою наступного переписування .htaccess (звичайно, лише Apache):

#Force SSL
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Дивіться джерело .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.