반응형
출발점
이 글을 작성한 이유는 www.example.com/file/font.ttf
에 폰트가 저장되어 있고, 해당 url로 접근하면 폰트를 직접 접근하여 탈취할 수 있기 때문에 이를 방지하고 싶었습니다.
소스에서는 접근이 가능해야 하고, 외부에서 url을 통해 직접 접근하는 것은 막아야 했습니다.
.htaccess
우선 직접 접근을 막는 방법은 간단합니다.
디렉토리가 file
이면 해당 디렉토리에 .htaccess
에 아래 코드를 추가합니다.
만약 .htaccess
가 없다면 새로 만들어서 추가합니다.
<FilesMatch "\.(ttf|otf|eot|woff)$">
Order Allow,Deny
Deny from all
</FilesMatch>
차단하고자 하는 확장자를 모두 추가합니다.
PHP
이제 file을 읽어올 PHP소스를 작성합니다.
예를 들어 fileLoader.php 로 작성했습니다.
<?php
// 파일 이름 설정
$filename = $_REQUEST['filename'] ?? ''
$file = "your_dir/file/{$filename}";
// 파일 유형에 따른 MIME 타입 설정
$mimeType = 'application/font-sfnt';
// 파일 존재 여부 확인
if (file_exists($file)) {
// 적절한 HTTP 헤더 전송
header('Content-Type: ' . $mimeType);
header('Content-Length: ' . filesize($file));
// 파일 읽기 및 출력
readfile($file);
exit;
} else {
// 파일이 없을 경우 에러 메시지 전송
header("HTTP/1.0 404 Not Found");
exit;
}
?>
폰트 호출하는 곳
폰트 호출하는 곳에서 PHP 스크립트를 호출하면 됩니다.
@font-face {
font-family: 'font.ttf';
src: url('fileLoader.php?filename=font.ttf') format('truetype');
}
만약 fileLoader.php에 직접 접근하더라도 폰트에는 접근할 수는 없습니다.
유형별 MIME 타입
확장자 유형별 MIIME 타입을 정리하고 끝내겠습니다.
폰트
- TrueType Font (TTF)
- MIME 타입:
application/font-sfnt
- MIME 타입:
- OpenType Font (OTF)
- MIME 타입:
application/font-sfnt
- MIME 타입:
- Web Open Font Format (WOFF)
- MIME 타입:
application/font-woff
- MIME 타입:
- Web Open Font Format 2 (WOFF2)
- MIME 타입:
font/woff2
- MIME 타입:
- Scalable Vector Graphics Font (SVG Font)
- MIME 타입:
image/svg+xml
- MIME 타입:
이미지
- JPEG Image
- MIME 타입:
image/jpeg
- MIME 타입:
- PNG Image
- MIME 타입:
image/png
- MIME 타입:
- GIF Image
- MIME 타입:
image/gif
- MIME 타입:
- BMP Image
- MIME 타입:
image/bmp
- MIME 타입:
- WebP Image
- MIME 타입:
image/webp
- MIME 타입:
- SVG Image
- MIME 타입:
image/svg+xml
- MIME 타입:
동영상
- MP4 (MPEG-4 Part 14)
- MIME 타입:
video/mp4
- MIME 타입:
- WebM
- MIME 타입:
video/webm
- MIME 타입:
- Ogg (Theora 또는 Vorbis 코덱 사용)
- MIME 타입:
video/ogg
- MIME 타입:
- AVI (Audio Video Interleave)
- MIME 타입:
video/x-msvideo
- MIME 타입:
- QuickTime
- MIME 타입:
video/quicktime
- MIME 타입:
- 3GP (3rd Generation Partnership Project)
- MIME 타입:
video/3gpp
(비디오가 주된 내용일 경우) - MIME 타입:
audio/3gpp
(오디오만 있거나 오디오가 주된 내용일 경우)
- MIME 타입:
- FLV (Flash Video)
- MIME 타입:
video/x-flv
- MIME 타입:
- MPEG (Moving Picture Experts Group)
- MIME 타입:
video/mpeg
- MIME 타입:
반응형
'Programming > PHP' 카테고리의 다른 글
PHP :: Cafe24 웹 호스팅 서버에서 SMTP 인증된 메일 발송하기 (0) | 2022.08.13 |
---|---|
PHP 문자열 출력 시 한글 깨지는 경우 (0) | 2022.02.07 |
PHP 주말,공휴일 제외한 영업일(날짜) 구하기 (2) | 2021.12.23 |
PHP 암호화된 압축파일 해제 후 다운로드 (0) | 2021.12.20 |
PHP 압축파일에 암호화 후 다운로드 (0) | 2021.12.16 |