Znam różne metody generowania bezpiecznego adresu URL na podstawie kontekstu, tj .:
$this->getUrl('my-page', array('_forced_secure' => $this->getRequest()->isSecure()));
Działa to świetnie do budowania linków prowadzących do bezpiecznej strony, gdy jesteś w trybie bezpiecznym (lub po prostu prowadzi do niezabezpieczonej strony, jeśli nie używasz trybu bezpiecznego).
Problem, na który patrzę, polega na tym, że Magento traktuje tylko kilka specjalnych stron jako wymagające bezpieczeństwa (konto klienta, kasa itp.). Wolałbym, aby Magento zawsze korzystał z bezpiecznego łącza, jeśli użytkownik jest obecnie w trybie bezpiecznym , lub z niezabezpieczonego łącza, jeśli użytkownik jest w trybie niezabezpieczonym.
Z tego, co mogę powiedzieć, moje jedyne prawdziwe opcje to:
- Zmodyfikuj każde wystąpienie,
$this->getUrl()
aby było podobne do powyższego fragmentu. - Ustaw niezabezpieczone
base_url
na używanie HTTPS, zmuszając wszystkie strony do zabezpieczenia.
Czy istnieje lepsza metoda, która nie wymaga zmiany każdego wywołania $this->getUrl()
lub zmuszania wszystkich stron do HTTPS niezależnie od kontekstu użytkownika?
-- edytować --
Wiem, że mogę zmodyfikować /app/code/core/Mage/Core/Model/Url.php->setRouteParams()
metodę, ale mam nadzieję, że istnieje lepszy sposób.
Mage_Core_Model_Store::getBaseUrl
aby nasz sklep był zawsze bezpieczny, gdy jest osadzony w zakładce Facebook. Są jednak inne rzeczy do rozważenia, takie jak przechowywanie pamięci podręcznej bloków w zależności od tego, które trafienie jest pierwsze (musisz dodać coś do klucza pamięci podręcznej). Będziesz mieć albo, jak mówi David, niezabezpieczone linki do logowania / realizacji transakcji lub ostatecznie każdy klient Twojej witryny znajdzie się w trybie bezpiecznym, jeśli kiedykolwiek się zaloguje lub przejdzie do kasy./catalogsearch/
ścieżki jako bezpiecznej powinno obejmować coś pasującego/catalogsearch/*/*/
? Tzn. Potrzebowałaby tylko jedna zasada, aby wszystkocatalogsearch
było bezpieczne.Ustaw następujące parametry w swoim
app/etc/config.xml
pliku:Działa to w Magento 1.9.1
Jeśli użytkownik używa https, powinno to zmusić wszystkie adresy URL do przepisania na https.
źródło
W Systemie jest zaniżona, ale ważna opcja Konfiguracja | Internet ~, w którym musisz powiedzieć „użyj bezpiecznego adresu URL w interfejsie użytkownika” - jeśli wybierzesz opcję tak, strona ładowana przez https będzie używać linków https,
w większości przypadków nie trzeba pisać kodu ani zapewniać dodatkowej konfiguracji
źródło