Buộc HTTPS trên tất cả các trang ở ngoại vi, không chỉ Thanh toán / Tài khoản


10

Trong phần phụ trợ, tôi đã kích hoạt Sử dụng URL bảo mật trong Frontend . Nhưng người dùng vẫn có thể truy cập trang web của tôi thông qua các URL không an toàn, ngoại trừ các trang thanh toán / tài khoản.

Tôi muốn buộc các URL an toàn trên tất cả các trang. Những gì tôi làm ngay bây giờ là thay đổi URL cơ sở không an toàn thành "https: // ...."

Có vẻ như làm việc. Nếu người dùng sử dụng HTTP, họ sẽ được chuyển hướng đến https. Nhưng tôi tự hỏi nếu đây là cách chính xác để làm điều đó. Bất kỳ tác dụng phụ?


Tôi đã nghe nói rằng cách chính xác là ghi đè tuyến an toàn trong config.xml

Câu trả lời:


16

Câu trả lời mặc định là, đặt url cơ sở không an toàn thành https: // tùy thuộc vào thiết lập của bạn, điều này đã đủ để chuyển hướng nếu người dùng cố gắng sử dụng http: //

Có thể một chuyển hướng ở cấp độ máy chủ web là tốt hơn, vì nó tránh các yêu cầu đi qua php trước.

Và nếu bạn muốn giải pháp thực sự an toàn tuyệt đối, bạn nên thêm trang web của mình trên https://hstspreload.appspot.com/ . Nhưng cẩn thận với điều này, nếu bạn cần thay đổi chứng chỉ của mình, điều này có thể gây ra vấn đề lớn. Hãy để Hoster của bạn quan tâm đến Phần này.


Tại sao phải thay đổi chứng chỉ? HSTS "chỉ" làm cho, trình duyệt truy cập trang từ bây giờ chỉ thông qua HTTPS. Tôi đã tạo một mô-đun cho việc này: github.com/ikonoshirt/StrictTransportSecurity
Fabian Blechschmidt

1
Có lẽ tôi đã trộn cái này lên một chút với ghim chứng chỉ. Nghĩ rằng việc tải trước cũng sẽ chứa dấu vân tay cho chứng chỉ
Flyingmana

2
@Fellingmana: Nếu bạn xem danh sách tải trước HSTS thực tế trong nguồn Chromium , phần lớn các mục không chứa dấu vân tay chứng chỉ hoặc bất cứ thứ gì thuộc loại này, chỉ là tên miền.
Leigh Brenecki

4

bạn có thể làm điều này với .htaccess trong apache. Sử dụng các dòng sau:

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

4

Đối với bất cứ ai vấp phải điều này (như tôi đã làm)

Đừng sử dụng htaccess. Theo quản trị viên điStores -> General -> Web and change -> Use Secure URLs on Storefront -> Yes and Use Secure URLs in Admin -> Yes

Không cần chỉnh sửa bất kỳ tập tin nào.


1
Whoa, thời gian tốt. đã trả lời ngày hôm qua. Tôi tin rằng đây sẽ là câu trả lời ... ít nhất, nó đang buộc https trên frontend và admin cho tôi mà không chạm vào apache. Câu trả lời hiện được chọn cho phép HTTPS, nhưng câu trả lời này "bắt buộc" https.
Joe Fletcher

1
Đây chính xác là những gì người hỏi đã nói họ đã cố gắng và nó không hoạt động
Dom

2

Tôi đã thử các giải pháp trước đó và mặc dù chúng có vẻ hiệu quả nhưng chúng đã khóa tôi khỏi bảng quản trị (không hoàn toàn hiểu lý do).

Để vào bảng quản trị một lần nữa, tôi phải vào phpmyadmin và vào bảng cơ sở dữ liệu core_config_data và thay đổi cả hai đường dẫn : web / safe / use_in_adminhtmlweb / unsecure / base_url trở lại bảng quản trị một lần nữa. Và đừng quên xóa thư mục bộ đệm nếu bạn phải chỉnh sửa trong cơ sở dữ liệu ...

Vì vậy, tôi đã áp dụng giải pháp .htaccess sau đây để cho phép tôi đăng nhập vào quản trị viên

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

Hy vọng nó sẽ giúp được ai đó


0

Hầu hết các cách tiếp cận trên .htaccess sẽ chuyển hướng hầu hết các trang về nhà khi được truy cập qua http.

Ví dụ: http://www.mystore.com/productA.html => http://www.mystore.com/

thay vì https://www.mystore.com/productA.html

Tôi đã giải quyết nó bằng cách viết lại .htaccess sau (tất nhiên chỉ có Apache):

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

Xem nguồn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.