Checkout / Account뿐만 아니라 프론트 엔드의 모든 페이지에서 HTTPS 강제


10

백엔드 에서 프론트 엔드에서 보안 URL 사용을 활성화했습니다 . 그러나 사용자는 결제 / 계정 페이지를 제외하고 비보안 URL을 통해 내 사이트를 계속 방문 할 수 있습니다.

모든 페이지에 보안 URL을 적용하고 싶습니다. 내가 지금하는 일은 안전하지 않은 기본 URL을 "https : // ..."로 변경하는 것입니다.

작동하는 것 같습니다. 사용자가 HTTP를 사용하면 https로 리디렉션됩니다. 그러나 이것이 올바른 방법인지 궁금합니다. 부작용이 있습니까?


올바른 방법은 Config.xml의 안전한 경로를 재정의하는 것을 들어 본 필자

답변:


16

기본 답변은 설정에 따라 안전하지 않은 기본 URL을 https : //로 설정하는 것입니다. 사용자가 http : //를 사용하려고하면 이미 리디렉션하기에 충분합니다.

웹 서버 수준의 리디렉션은 php를 먼저 통과하는 요청을 피하기 때문에 더 좋습니다.

완벽한 보안 솔루션을 원한다면 https://hstspreload.appspot.com/에 웹 사이트를 추가해야합니다 . 그러나 인증서를 변경해야 할 경우 큰 문제가 발생할 수 있습니다. Hoster가이 부분에 관심을 갖도록하십시오.


인증서를 변경해야하는 이유 HSTS는 "브라우저"만으로 브라우저가 HTTPS를 통해서만 페이지에 액세스 할 수 있습니다. 나는 이것을 위해 모듈을 만들었다 : github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt

1
어쩌면 나는 이것을 인증서 고정과 약간 섞었습니다. 사전로드에는 인증서의 지문도 포함되어 있다고 생각했습니다.
Flyingmana

2
@Flyingmana : Chromium 소스에서 실제 HSTS 사전로드 목록을 보면 대부분의 항목에 인증서 지문이나 도메인 이름 만 포함되어 있지 않습니다.
레이 Brenecki

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를 사용하지 마십시오. 관리자로 이동Stores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

파일을 편집 할 필요가 없습니다.


1
우와, 좋은 타이밍. 어제 대답했다. 나는 이것이 답이되어야한다고 생각합니다 ... 적어도 아파치를 건드리지 않고 프론트 엔드와 관리자에게 https를 강요하고 있습니다. 현재 선택된 답변은 HTTPS를 활성화하지만이 답변은 "강제"https입니다.
Joe Fletcher

1
이것이 바로 질문자가 시도한 것과 작동하지 않았다는 것입니다
Dom

2

이전 솔루션을 사용해 보았지만 작동하는 것처럼 보이지만 관리자 패널에서 나를 잠갔습니다 (이유를 완전히 이해하지 못함).

관리자 패널에 들어가 다시 내가 phpMyAdmin에 들어갈 및 데이터베이스 테이블에 들어갈했다 core_config_data 모두 변경 경로 : 웹 / 보안 /의 use_in_adminhtml웹 / 비보안 / 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 #################

누군가에게 도움이되기를 바랍니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.