320x100
728x90
.htaccess 파일에 아래 코드 삽입
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# HTTP로 접속 된 경우,
RewriteCond %{HTTPS} off
# 아래의 URL은 항상 https로 리다이렉트
RewriteCond %{HTTP_HOST} www.example.com
RewriteCond %{REQUEST_URI} ^/admin/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/inquiry/.*$
# 단 아래를 제외하고.
RewriteCond %{REQUEST_URI} !^/assets/.*$
RewriteCond %{REQUEST_URI} !^.*\.(js|css|gif|jpg|png|ico|php)$
# https로 리다이렉트
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# HTTPS로 접속 된 경우,
RewriteCond %{HTTPS} on
# 아래의 URL이외는 항상 http로 리다이렉트
RewriteCond %{HTTP_HOST} www.example.com
RewriteCond %{REQUEST_URI} !^/admin/.*$
RewriteCond %{REQUEST_URI} !^/inquiry/.*$
# 단 아래를 제외하고.
RewriteCond %{REQUEST_URI} !^/assets/.*$
RewriteCond %{REQUEST_URI} !^.*\.(js|css|gif|jpg|png|ico|php)$
# http로 리다이렉트
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
1) 모든 트래픽에 대해 https 강제 적용하기
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2) 특정 도메인에만 https 강제 적용하기
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain1.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
(빨간 부분에 https 적용을 제외하고 싶은 도메인 주소 작성)
3) 특정 폴더만 https 적용하기
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(folder1|folder2|folder3) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<php hsts 적용하기>
header.php 에 아래 코드 적용
enableHSTS.php
<?php header("strict-transport-security: max-age=31536000; includeSubDomains; preload"); >
disable 시키고 싶을 때,
disableHSTS.php
<?php header("strict-transport-security: max-age=0;preload"); >
* HSTS 옵션
1) max-age : hsts 정책을 적용할 기간(초)를 설정
2) includeSubdomains : 도메인(example.com)의 서브 도메인 (*.example.com 등)에도 hsts 설정을 적용
3) preload : 해당 도메인을 hsts 적용 preload list에 추가하도록 함
(참고)
preload list
- HSTS는 HTTPS로 웹 사이트에 접속하기 위해 적어도 한번 웹 서버와 통신을 해야하는데 통신 전에 미리 HTTPS로 접속하도록 목록을 미리 만들어 놓은 것.
- 브라우저에서 지원하는 기능이며, 브라우저 안에 기본적으로 내장되어 있는 사이트 목록들이 있음
- 서버가 헤더에 preload값을 내려주면 이 목록에 해당 사이트도 추가 됨.
- preload에 추가된 사이트는 서버가 HSTS 헤더를 삭제해도 브라우저에는 설정이 유지된다.
- Chrome의 HSTS preload 리스트는 IE등 타 브라우저에서도 활용하고 있는 것으로 파악 됨
- preload list에 추가는 신중해야 함
HSTS 설정 시 주의 사항
- 서버측 redirection 처리를 별도로 하지 않았는데 https로 자동 URL이 변경되는 경우가 있다면 HSTS 헤더룰 의심
- HSTS 헤더가 설정된 https url에 한번이라도 접속하면, HTTP 접속시에도 HTTPS로 접속됨
- Spring Security에서 디폴트로 HTTPS 요청시에 HSTS 헤더값을 내려주도록 되어있음
(http://wiki.gurubee.net/display/SWDEV/HSTS+%28HTTP+Strict+Transport+Security%29)
728x90
반응형