Server Side Includes
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Server Side Includes (SSI)는 텍스트 기반의 간단한 프로그래밍 언어이다. HTML 주석 안에 지시어를 배치하여 웹 페이지에 동적 콘텐츠를 포함할 수 있으며, 파일, 프로그램 출력, 시스템 변수 등을 포함하는 데 사용된다. SSI는 `` 형태의 구문을 사용하며, include, exec, echo, config, flastmod, fsize 등의 지시어를 제공한다. 제어 흐름을 위한 if-elif-else-endif, 변수 설정을 위한 set, 환경 변수를 출력하는 printenv 등의 지시어도 지원한다.
더 읽어볼만한 페이지
- 웹 기술 - 공용 게이트웨이 인터페이스
공용 게이트웨이 인터페이스(CGI)는 웹 서버가 외부 프로그램을 실행하기 위한 표준 인터페이스이며, 웹 서버가 클라이언트 요청에 응답하여 프로그램을 실행하고 그 결과를 클라이언트에 전송하는 방식으로 동작한다. - 웹 기술 - FastCGI
FastCGI는 웹 서버와 외부 애플리케이션 간 효율적인 통신을 위한 프로토콜로, CGI의 단점을 보완하여 지속적인 프로세스를 통해 웹 애플리케이션의 성능과 안정성을 향상시킨다. - 웹 1.0 - 전화 접속
전화 접속은 공중 교환 전화망을 통해 모뎀과 전화선으로 인터넷에 연결하는 방식으로, 1980년대부터 사용되었으나 광대역 인터넷의 등장으로 2000년대 이후 사용이 줄어 현재는 제한적으로 사용되며 사라지는 추세이다. - 웹 1.0 - 자바 애플릿
자바 애플릿은 웹 페이지에서 실행되는 자바 기반 프로그램으로, 웹 상호작용성을 높였으나 기술적 문제와 웹 표준 기술 발전에 따라 쇠퇴하여 사용이 중단되었다. - 스크립트 언어 - Tcl
Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다. - 스크립트 언어 - PHP
PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
Server Side Includes | |
---|---|
개요 | |
종류 | 서버 측 스크립트 언어 |
개발자 | 로버트 R. 프리먼 (Robert R. Freeman) |
첫 공개 | 1995년 |
특징 | |
용도 | 기존 HTML 페이지에 동적 콘텐츠 추가 웹 서버에서 실행 |
실행 방식 | 웹 서버가 HTML 페이지를 제공하기 전에 서버에서 처리 |
장점 | 간단한 동적 콘텐츠 구현 용이 서버 부하 감소 (클라이언트 측 스크립트보다) |
단점 | 보안 취약점 가능성 존재 서버 설정 필요 |
주요 명령어 | `#echo`: 변수 출력 `#include`: 파일 포함 `#exec`: 셸 명령어 실행 `#flastmod`: 파일 최종 수정일 출력 `#fsize`: 파일 크기 출력 `#config`: SSI 설정 변경 `#if`: 조건문 `#loop`: 반복문 `#goto`: 지정된 위치로 이동 `#break`: 루프 종료 `#return`: 함수 종료 |
활용 예시 | |
공통 헤더/푸터 | 모든 페이지에 동일한 헤더/푸터를 쉽게 포함 |
현재 시간 표시 | 페이지에 현재 시간을 동적으로 표시 |
파일 정보 표시 | 파일 크기나 최종 수정 날짜 등을 표시 |
보안 고려 사항 | |
명령어 실행 제한 | `#exec` 명령어 사용을 신중하게 고려하고 필요한 경우 비활성화 |
입력값 검증 | 사용자 입력값을 검증하여 보안 취약점 방지 |
디렉터리 접근 제한 | SSI가 접근할 수 있는 디렉터리를 제한 |
설정 | |
아파치 웹 서버 설정 | `.htaccess` 파일 또는 서버 설정 파일에서 SSI 활성화 |
파일 확장자 | `.shtml`, `.shtm`, `.html` 등 다양한 확장자 사용 가능 |
2. 설계
SSI는 단순한 프로그래밍 언어로, 단 하나의 자료형인 텍스트만 지원한다. 제어 흐름은 상당히 단순하며, 선택을 지원하지만, 루프는 기본적으로 지원되지 않으며, include를 사용하거나 HTTP 리디렉션을 사용하여 재귀적으로만 수행할 수 있다.[3] 언어의 단순한 설계는 대부분의 서버 측 스크립트 언어보다 배우고 사용하기 쉽게 만들며, 복잡한 서버 측 처리는 종종 더 많은 기능을 갖춘 프로그래밍 언어 중 하나로 수행된다. SSI는 튜링 완전하다.[3]
매일 바뀌는 인용구를 포함하는 웹 페이지는 웹 페이지 파일에 다음 코드를 배치하여 인용구를 포함할 수 있다.[1]
SSI(Server Side Includes) 지시어는 웹 페이지에 특정 내용을 삽입하는 데 사용된다. 주요 기능은 다음과 같다:
SSI는 다음과 같은 간단한 구문을 가진다: ``. 지시어는 HTML 주석 안에 배치되어 SSI가 활성화되지 않은 경우 사용자가 페이지에서 SSI 지시어를 볼 수 없도록 한다(소스 코드를 보지 않는 한). 구문은 선행 "<!--"와 지시어 사이에 공백을 허용하지 않는다.[4]
3. 사용 예시
quote.txt영어 파일을 한 번만 변경하면 해당 파일을 포함하는 모든 페이지에 최신 일일 인용구가 표시된다.[1] 포함은 파일로 제한되지 않으며, 프로그램의 텍스트 출력 또는 현재 시간과 같은 시스템 변수 값일 수도 있다.[1]
4. 지시어
4. 1. 일반 지시어
다음은 NCSA HTTPd(1990년대) 시대의 SSI 지시어이다.[5] 일부 구현에서는 이들 중 일부를 지원하지 않는다.[6]
지시어 | 매개변수 | 설명 |
---|---|---|
include | file 또는 virtual | 가장 많이 사용되는 SSI 지시어이다. 이를 통해 한 문서의 내용을 다른 문서에 포함할 수 있다. 포함된 문서는 다른 SSI 지원 파일일 수도 있다. `file` 또는 `virtual` 매개변수는 포함할 파일(HTML 페이지, 텍스트 파일, 스크립트 등)을 지정한다. NCSA HTTPd는 `include`를 통한 CGI를 지원하지 않았지만,[5] 이후 Apache HTTPd는 지원한다.[7] 프로세스가 파일을 읽거나 스크립트를 실행할 수 있는 권한이 없으면 include는 실패한다. "`virtual`" 매개변수는 모든 디렉토리 경로를 URL의 일부로 처리하는 반면, "`file`"은 기본 파일 시스템의 모든 디렉토리 경로를 처리한다. "`file`"을 사용할 때는 절대 경로 또는 상위 디렉토리에 접근하기 위한 `../`의 참조가 금지된다. Apache 설명서는 "`file`"보다 "`virtual`"을 사용하는 것을 권장한다.[7] |
exec | cgi 또는 cmd | 이 지시어는 서버에서 프로그램, 스크립트 또는 셸 명령을 실행한다. `cmd` 매개변수는 서버 측 명령을 지정하고, `cgi` 매개변수는 CGI 스크립트의 경로를 지정한다. |
echo | var | 이 지시어는 지정된 HTTP 환경 변수의 내용을 표시한다. |
config | timefmt, sizefmt, 또는 errmsg | 이 지시어는 날짜, 시간, 파일 크기 및 오류 메시지(SSI 명령이 실패했을 때 반환됨)에 대한 표시 형식을 구성한다. |
flastmod 및 fsize | file 또는 virtual | 이 지시어는 지정된 문서가 마지막으로 수정된 날짜 또는 지정된 문서의 크기를 표시한다. `file` 또는 `virtual` 매개변수는 사용할 문서를 지정한다. `file` 매개변수는 문서를 문서 경로에 상대적으로 정의하고, `virtual` 매개변수는 문서를 문서 루트에 상대적으로 정의한다. |
4. 2. 제어 지시어
제어 지시어는 나중에 SSI에 추가되었다. 여기에는 널리 사용되는 if-elif-else-endif 흐름 제어와 변수 쓰기, 그리고 일부 구현에서만 발견되는 루프와 같은 더 이국적인 기능이 포함된다.지시어 | 매개변수 | 설명 | 예시 | 다음에서 발견됨 |
---|---|---|---|---|
if영어, elif영어, else영어, endif영어 | expr | if문. 단일 물리적 페이지에서 여러 논리적 페이지를 결정하고 생성할 수 있는 조건 테스트에 사용된다. elif 는 중첩된 else-if의 축약형이다. else 및 endif 는 매개변수를 허용하지 않는다. | 널리 사용됨. | |
set영어 | var, value | SSI 변수의 값을 설정한다. 아파치는 인코딩에 대한 추가 매개변수를 제공한다.[8] | 아파치,[8] Nginx[9] | |
printenv | 이 지시어는 환경 변수 및 사용자 정의 변수를 포함하여 모든 SSI 변수와 해당 값을 출력한다. 속성이 없다. | 아파치[8] |
4. 3. 실행 가능한 명령 (일본어 문서)
SSI 변수 값을 웹 페이지에 삽입한다.[1] 시스템 명령어나 CGI 프로그램을 실행하고, 그 출력 결과를 웹 페이지에 삽입한다.[1] 지정된 파일의 크기를 웹 페이지에 삽입한다.[1] 웹 페이지 내에 파일의 최종 수정 날짜를 삽입한다.[1] 동일한 웹 서버에 있는 다른 파일의 내용을 가져와 웹 페이지 내에 삽입한다. 클라이언트 측에서는 이미 포함된 상태이므로, 브라우저 등에서 소스를 봐도 include 지정이 대체되어 있어 구별할 수 없다.[1]참조
[1]
웹사이트
SSI Commands
https://www.w3.org/J[...]
2019-03-24
[2]
웹사이트
Configuring your server to permit SSI
http://httpd.apache.[...]
The Apache Software Foundation
2015-06-24
[3]
웹사이트
Server Side Includes Turing machine, Jan Schejbal.
http://www.janschejb[...]
Janschejbal.de
2012-12-06
[4]
웹사이트
Basic SSI Directives and Syntax
http://httpd.apache.[...]
2018-02-09
[5]
웹사이트
Server Side Includes (SSI)
http://hoohoo.ncsa.u[...]
2019-03-24
[6]
웹사이트
Module ngx_http_ssi_module
http://nginx.org/en/[...]
2021-11-16
[7]
웹사이트
Apache Module mod_include
http://httpd.apache.[...]
Apache Software Foundation
2021-09-07
[8]
웹사이트
mod_include
https://httpd.apache[...]
2019-03-25
[9]
웹사이트
ngx_http_ssi_module
https://nginx.org/en[...]
2019-03-25
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com