아파치 스트럿츠
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
아파치 스트럿츠는 자바 엔터프라이즈 에디션(Java EE) 웹 애플리케이션 개발을 위한 오픈 소스 모델-뷰-컨트롤러(MVC) 프레임워크이다. 스트럿츠는 모델, 뷰, 컨트롤러를 분리하여 애플리케이션의 유지보수성을 높이는 것을 목표로 한다. 스트럿츠 1은 2008년에 1.3.10 버전이 릴리즈되었고 2013년에 지원이 종료되었으며, 이후 보안 취약점이 발견되었다. 스트럿츠 2는 스트럿츠 1의 단점을 개선하여 어노테이션, 의존성 주입, POJO 지원 등을 제공하며, OGNL 표현식을 통한 동적 파라미터 처리가 가능하지만 보안 취약점 문제가 발생하기도 했다. 대한민국에서는 정부 및 공공기관 웹사이트에서 많이 사용되었으나, 보안 문제로 인해 사용에 주의가 필요하다. 스트럿츠 외에도 스프링 프레임워크, Stripes, Tapestry 등 다양한 경쟁 MVC 프레임워크가 존재한다.
더 읽어볼만한 페이지
- 웹 서버 소프트웨어 - 인터넷 정보 서비스
인터넷 정보 서비스(IIS)는 마이크로소프트 윈도우 운영 체제에서 사용되는 웹 서버 소프트웨어이며, 액티브 서버 페이지(ASP) 지원, IPv6 지원, 모듈식 아키텍처, 보안 기능 강화 등을 통해 발전해 왔고, 다양한 인증 메커니즘과 .NET 프레임워크를 지원하며, 넷크래프트와 W3Techs의 조사에서 세계에서 두 번째 또는 세 번째로 널리 사용되는 웹 서버이다. - 웹 서버 소프트웨어 - 임베디드 HTTP 서버
임베디드 HTTP 서버는 임베디드 애플리케이션 내에서 사용되는 HTTP 서버로, 씬 클라이언트 인터페이스 제공, 정보 배포, 웹 애플리케이션 개발 등에 활용되며, 제한된 자원 환경에서 다양한 요구 사항을 충족해야 한다. - 웹 프레임워크 - 드루팔
드루팔은 드리스 바이테르트가 개발하여 2001년 공개된 PHP 기반의 오픈 소스 콘텐츠 관리 시스템으로, 모듈과 테마를 통해 기능 확장이 가능하며 다양한 기관에서 활용되고 활발한 커뮤니티를 가지고 있다. - 웹 프레임워크 - 실버스트라이프 CMS
실버스트라이프 CMS는 PHP로 제작된 오픈 소스 콘텐츠 관리 시스템으로, 웹사이트 및 웹 애플리케이션을 개발하고 관리하는 데 사용되며, MVC 패턴과 Sapphire ORM 프레임워크를 활용하여 사용자 친화적이고 확장 가능한 플랫폼을 제공한다. - 아파치 소프트웨어 재단 프로젝트 - 아파치 루씬
아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다. - 아파치 소프트웨어 재단 프로젝트 - 아파치 하둡
아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다.
아파치 스트럿츠 - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
개발자 | 아파치 소프트웨어 재단 |
첫 출시 | 2000년 5월 |
안정화 버전 | Struts 2: 6.4.0 (2024년 4월 19일) |
지원 종료 버전 | Struts 1: 1.3.10 (2008년 12월 8일) |
프로그래밍 언어 | 자바 |
운영 체제 | 크로스 플랫폼 |
플랫폼 | 크로스 플랫폼 (JVM) |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 아파치 스트럿츠 공식 웹사이트 |
Struts 1 | |
최초 개발자 | 크레이그 맥클라나한 |
후속 | 아파치 스트럿츠 2 |
2. 디자인 목표 및 개요 (스트럿츠 1)
표준 Java EE 웹 애플리케이션에서 클라이언트는 일반적으로 웹 폼을 통해 서버를 호출한다. 정보는 Java 서블릿이나 JSP 문서에 전달되어 처리된다. 이러한 방식은 애플리케이션 로직과 프레젠테이션이 혼합되어 유지보수를 어렵게 만드는 경향이 있었다.
스트럿츠는 이러한 문제점을 해결하기 위해 ''모델''(데이터베이스와 상호 작용하는 애플리케이션 로직), ''뷰''(클라이언트에 제시되는 HTML 페이지), ''컨트롤러''(뷰와 모델 간에 정보를 전달하는 인스턴스)를 분리하는 MVC 아키텍처를 도입했다. 스트럿츠는 `ActionServlet`이라는 서블릿을 컨트롤러로 제공하고, 뷰(일반적으로 JSP, XML/XSLT, Velocity도 지원됨)에 대한 템플릿 작성을 지원한다. 웹 애플리케이션 프로그래머는 모델 코드를 작성하고, 모델, 뷰, 컨트롤러를 묶는 중앙 구성 파일인 `struts-config.xml`을 만든다.
클라이언트의 요청은 "액션" 형태로 컨트롤러에 전달된다. 컨트롤러는 요청을 받으면 해당 액션 클래스를 호출하여 애플리케이션별 모델 코드와 상호작용한다. 모델 코드는 "ActionForward"를 반환하여 클라이언트에 보낼 출력 페이지를 결정한다. 정보는 특수 JavaBeans 형태로 모델과 뷰 간에 전달되며, 강력한 사용자 정의 태그 라이브러리를 통해 Java 코드 없이 프레젠테이션 계층에서 빈의 내용을 읽고 쓸 수 있다.
스트럿츠는 모델 2 요청 기반 웹 애플리케이션 프레임워크로 분류된다.[2]
스트럿츠는 웹 폼을 통한 국제화를 지원하며, "타일"이라는 템플릿 메커니즘을 통해 프레젠테이션 계층을 독립적인 구성 요소(헤더, 푸터, 메뉴 탐색, 콘텐츠 등)로 구성할 수 있게 해준다.
JSP 커스텀 태그를 통해 Java 코드를 JSP 파일과 분리하여, 읽기 쉽고 세련된 코딩이 가능하게 되었다.
주요 Struts 태그 라이브러리는 다음과 같다.
태그 라이브러리 | 설명 |
---|---|
HTML | HTML 폼 부분에 사용 |
Logic | 조건 분기 및 반복 등의 제어 로직 제공 |
Beans | Model에서 정의된 JavaBeans에 접근하는 기능 제공 |
Nested | 속성명 표기를 생략 가능하게 함 |
Tiles | 여러 JSP에서 사용하는 코드를 공통화하는 템플릿 기능 제공 |
정비된 JSP 커스텀 태그를 제공하여 JSP 파일에서 Java 코드를 분리할 수 있게 한다. 이를 통해 기존 JSP처럼 HTML 태그 안에 `<%`와 `>%`로 둘러싸인 스크립릿 형태의 Java 소스 코드를 혼합할 필요 없이, 읽기 쉽고 세련된 코딩이 가능하게 되었다.[2]
웹워크도 참고
Struts에서는 `ActionServlet`이 제공되어 화면 전환을 제어하는 설정 파일 (struts-config.xml
)을 변경하는 것만으로 쉽게 전환 대상을 변경할 수 있다. 액션 서블릿에서는 화면에서 입력된 내용을 검사하는 Validator 기능을 제공하며, 설정 파일 (validator-rules.xml
)을 변경하는 것만으로 입력 검사 사양을 변경할 수 있었다.
3. 특징 (스트럿츠 1)
주요 스트럿츠 태그 라이브러리는 다음과 같다.태그 라이브러리 설명 HTML HTML 폼 부분에 사용 Logic 조건 분기 및 반복 등의 제어 로직 제공 Beans Model에서 정의된 JavaBeans에 접근하는 기능 제공 Nested 속성명 표기를 생략 가능하게 함 Tiles 여러 JSP에서 사용하는 코드를 공통화하는 템플릿 기능 제공
또한 스트럿츠는 `ActionServlet`을 제공하여 화면 전환을 제어한다. 설정 파일 ( `struts-config.xml` )을 변경하는 것만으로 쉽게 전환 대상을 변경할 수 있다. 액션 서블릿에서는 화면에서 입력된 내용을 검사하는 Validator 기능을 제공하며, 설정 파일 ( `validator-rules.xml` )을 변경하는 것만으로 입력 검사 사양을 변경할 수 있었다. 입력 검사하는 데이터는 액션 폼이라고 불리는 Beans에 저장되었다.[2]
4. 특징 (스트럿츠 2)
스트럿츠 2에서는 스트럿츠 1과 비교하여 다음과 같은 개선이 이루어졌다.[6]
또한, OGNL (Object-Graph Navigation Language, 객체 그래프 탐색 언어)이라는 표현식 언어가 탑재되어 있어, 이를 통해 동적인 파라미터를 다룰 수 있게 되었다.[10] 한편, 이 기능에서는 종종 심각한 보안 허점이 발견되어, 편리함과 반대로 보안 측면의 취약성도 지적되고 있다.[11]
5. 보안 취약점 (스트럿츠 2)
Struts2에서는 OGNL (Object-Graph Navigation Language, 객체 그래프 탐색 언어)이라는 표현식 언어가 탑재되어 있어, 이를 통해 동적인 파라미터를 다룰 수 있게 되었다.[10] 그러나 이 기능에서는 종종 심각한 보안 허점이 발견되어, 편리함과 반대로 보안 측면의 취약성도 지적되고 있다.[11]
Struts2의 다수의 [보안 취약점]이 공격 대상이 되어 다수의 피해가 발생하고 있다. 다음은 일본에서 발생한 주요 피해 사례이다.
피해 기관 | 피해 내용 |
---|---|
GMO 페이먼트 게이트웨이(도쿄도·주택 금융 지원 기구) | 신용카드 번호 36만 건 유출[12][13] |
제트로(JETRO) | 이메일 주소 2만 건 유출[14][13] |
일본 우편(日本郵便) | 이메일 주소 2만 건 유출[15][13] |
피아(ぴあ) | 신용카드 번호 3만 건 유출[16] |
국토교통성 토지 종합 정보 시스템 | 부동산 거래 가격 설문 응답 4,335건, 소유권 이전 등기 정보 194,834건이 유출되었을 가능성이 있음[17] |
6. 대한민국의 현황
Java EE 웹 애플리케이션 개발에 널리 사용되어 왔다. 특히 대한민국 정부 및 공공기관, 지방자치단체 웹사이트에서 많이 활용되었다.[2] 최근에는 스프링 프레임워크와 결합하여 제어계층을 담당하기도 한다. 스트럿츠는 스프링 프레임워크를 통해 iBATIS, 하이버네이트 등의 퍼시스턴트 계층 프레임워크와 결합하여 사용되기도 한다.
아파치 톰캣과 같은 서블릿 컨테이너 위에서 실행되며, 서블릿과 JSP를 이용한 개발 환경에서 널리 사용되었다.
2013년 4월 5일에 스트럿츠 1의 지원이 종료되었고[7], 2014년 4월에는 심각한 보안 취약점도 발견되었다.[9]
7. 경쟁 MVC 프레임워크
스프링 MVC, Stripes, Apache Wicket, Play Framework, Apache Tapestry 등은 "경량" 프레임워크로 분류된다.[2]
WebWork는 스트럿츠와 동일한 아키텍처를 유지하면서 강화 및 정교화를 목표로 했지만, 스트럿츠와 WebWork는 다시 병합되어 스트럿츠 2로 출시되었다.
그 외 Java 기반 MVC 프레임워크로는 WebObjects, Grails가 있다.
8. 파생 프레임워크
- Super Agile Struts (SAStruts)
: Seasar 프로젝트가 공개한 Struts 1과 독자적인 DI 컨테이너인 Seasar2를 기반으로, 보다 빠른 개발을 목표로 하는 프레임워크이다.
- TERASOLUNA Server Framwork for Java
: NTT 데이터가 공개한 Struts 1과 Spring, iBATIS를 기반으로 독자적인 확장을 한 서버 사이드 프레임워크이다.
9. 참고 문헌
- 제임스 홈스, 《스트럿츠: 완전 참조》, 맥그로-힐 오스본 미디어
- 빌 더드니와 조나단 레르, 《자카르타 핏폴스》, 와일리
- 빌 시겔코우, 《자카르타 스트럿츠 요리책》, O'Reilly
- 제임스 굿윌, 리처드 하이타워, 《프로페셔널 자카르타 스트럿츠》, Wrox Press
- 존 카넬과 롭 해롭, 《프로 자카르타 스트럿츠, 2판》, Apress
- 존 카넬, 제프 린우드, 마치에 자바츠키, 《프로페셔널 스트럿츠 애플리케이션: 스트럿츠, ObjectRelationalBridge, 루신, 벨로시티로 웹 사이트 구축》, Apress
- 테드 허스티드 외, 《액션 스트럿츠》, 매닝 출판사
- https://www.softwaresummit.com/2003/speakers/AshleyStrutsView.pdf 스트럿츠 뷰 어셈블리 및 유효성 검사 (PDF 형식)
- 스테판 비스너, 《자카르타 스트럿츠 1.2 학습》, 팩트 출판, 2005
참조
[1]
웹사이트
Struts1 - Reloaded
https://github.com/w[...]
Github
2024-02-13
[2]
서적
2006 IEEE International Conference on e-Business Engineering (ICEBE'06)
Proceedings of 2006 IEEE International Conference on e-Business Engineering (ICEBE 2006)
2010-10-10
[3]
웹사이트
Announcements 2023
https://struts.apach[...]
2023-06-19
[4]
웹사이트
普及進む無償のフレームワーク「Struts」
https://xtech.nikkei[...]
ITPro
2002-12-16
[5]
웹사이트
手を握るStrutsとSpring、今後の行方は
https://web.archive.[...]
マイナビニュース
2005-10-17
[6]
웹사이트
Struts2入門
http://codezine.jp/a[...]
CodeZine
2008-03-21
[7]
웹사이트
Apache Struts 1 End-Of-Life (EOL) Press Release
https://struts.apach[...]
Apacheソフトウェア財団
2013-04-05
[8]
웹사이트
Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~
http://www.lac.co.jp[...]
株式会社ラック
2014-04-24
[9]
웹사이트
Apache Struts2 の脆弱性対策について
https://www.ipa.go.j[...]
정보처리추진기구
2014-05-02
[10]
웹사이트
Struts 2.0 と OGNL
http://www.ibm.com/d[...]
IBM
2011-03-08
[11]
웹사이트
例えば、Strutsを避ける
http://www.scutum.jp[...]
株式会社ビットフォレスト
2014-04-23
[12]
웹사이트
不正アクセスに関するご報告と情報流出のお詫び
https://corp.gmo-pg.[...]
""
2017-03-10
[13]
뉴스
日経 xTECH 猛威振るうStruts2脆弱性への攻撃、どうすれば防げたか
https://xtech.nikkei[...]
日経BP社
2017-03-22
[14]
웹사이트
日本貿易振興機構 (JETRO)不正アクセスを受け情報漏洩の恐れ
https://www.cybersec[...]
2017-06-07
[15]
웹사이트
Apache Struts 2の脆弱性で日本郵便のサイトにも不正アクセス、国際郵便用サービスの登録メールアドレス2万9116件、送り状1104件が流出
https://internet.wat[...]
2017-06-07
[16]
웹사이트
ぴあ、チケットサイトから個人情報15万件流出か カード情報も
https://internet.wat[...]
2021-03-25
[17]
웹사이트
"「土地総合情報システム」における不正アクセスおよび情報流出の可能性について"
https://www.mlit.go.[...]
2017-06-07
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com