Forza HTTPS su tutte le pagine del frontend, non solo su Checkout / Account


10

Nel back-end, ho abilitato Usa URL protetti nel front-end . Ma gli utenti possono comunque visitare il mio sito tramite URL non sicuri, ad eccezione delle pagine di checkout / account.

Voglio forzare URL sicuri su tutte le pagine. Quello che faccio adesso è cambiare l'URL di base non sicuro in "https: // ...."

Sembra funzionare Se gli utenti utilizzano HTTP, verranno reindirizzati a https. Ma mi chiedo se questo è il modo corretto di farlo. Qualche effetto collaterale?


ho sentito che il modo corretto è quello di ignorare il percorso sicuro in config.xml

Risposte:


16

La risposta predefinita è, impostare l'URL di base non sicuro su https: // a seconda della configurazione, questo è già sufficiente per un reindirizzamento se gli utenti tentano di utilizzare http: //

Forse un reindirizzamento a livello di server web è migliore, in quanto evita che le richieste passino prima tramite php.

E se vuoi la vera soluzione perfettamente sicura, dovresti aggiungere il tuo sito Web su https://hstspreload.appspot.com/ . Ma attenzione, se è necessario modificare il certificato, ciò può causare grossi problemi. Lascia che il tuo Hoster si preoccupi di questa parte.


Perché cambiare il certificato? HSTS "solo" fa, che il browser accede alla pagina da ora in poi solo tramite HTTPS. Ho realizzato un modulo per questo: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt

1
Forse l'ho un po 'confuso con l'appuntamento del certificato. Pensavo che il precaricamento conterrebbe anche l'impronta digitale per il certificato
Flyingmana,

2
@Flyingmana: se guardi l' attuale elenco di precaricamento HSTS nella fonte Chromium , la stragrande maggioranza delle voci non contiene un'impronta digitale del certificato o qualcosa del genere, solo il nome del dominio.
Leigh Brenecki,

4

puoi farlo con .htaccess in apache. Usa queste righe:

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

4

Per chiunque inciampare in questo (come ho fatto io)

Non usare htaccess. Sotto admin vaiStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

Non è necessario modificare alcun file.


1
Whoa, buon tempismo. ha risposto ieri. Credo che questa dovrebbe essere la risposta ... almeno, sta forzando https su frontend e admin per me senza toccare apache. La risposta attualmente selezionata abilita HTTPS, ma questa risposta "forza" https.
Joe Fletcher il

1
Questo è esattamente ciò che l'interrogante ha detto di aver provato e che non ha funzionato
Dom

2

Ho provato le soluzioni precedenti e anche se sembravano funzionare, mi hanno bloccato fuori dal pannello di amministrazione (non capisco completamente il motivo).

Per entrare di nuovo nel pannello di amministrazione ho dovuto entrare in phpmyadmin e accedere alla tabella del database core_config_data e cambiare entrambi i percorsi : web / secure / use_in_adminhtml e web / unsecure / base_url per tornare di nuovo nel pannello di amministrazione. E non dimenticare di svuotare la cartella della cache se devi apportare modifiche nel database ...

Così ho applicato invece la seguente soluzione .htaccess che mi ha permesso di accedere anche ad admin

# 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 #################

Spero che aiuti qualcuno


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.