스트럿츠 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | [[파일: | + | [[파일:Struts.png|썸네일|300픽셀|'''Struts''' 로고]] |
− | |||
− | |||
'''스트럿츠'''<!--스트러츠-->(Struts)는 [[자바]](Java) 기반의 애플리케이션을 개발하기 위한 [[오픈소스]] [[표준 프레임워크]]이다. [[크레이그 맥클라나한]](Craig McClanahan)에 의해 최초로 만들어졌으며, 2000년 5월 [[아파치재단]]에 이관되어 '''아파치 스트럿츠'''(Apache Struts)라고 부른다. [[스프링]](Spring) 프레임워크 또는 스프링 기반의 [[전자정부 표준 프레임워크]](eGovFrame)가 널리 쓰이면서, 스트럿츠(Struts)는 거의 사용되지 않고 있다. | '''스트럿츠'''<!--스트러츠-->(Struts)는 [[자바]](Java) 기반의 애플리케이션을 개발하기 위한 [[오픈소스]] [[표준 프레임워크]]이다. [[크레이그 맥클라나한]](Craig McClanahan)에 의해 최초로 만들어졌으며, 2000년 5월 [[아파치재단]]에 이관되어 '''아파치 스트럿츠'''(Apache Struts)라고 부른다. [[스프링]](Spring) 프레임워크 또는 스프링 기반의 [[전자정부 표준 프레임워크]](eGovFrame)가 널리 쓰이면서, 스트럿츠(Struts)는 거의 사용되지 않고 있다. | ||
− | == | + | == 등장 배경 == |
− | '''아파치 스트럿츠(Apache Struts)'''는 원래 [[자카르타 프로젝트]]의 | + | '''아파치 스트럿츠(Apache Struts)'''는 원래 [[자카르타 프로젝트]]의 하위프로젝트에 속하였으나 점차 최상위 레벨의 프로젝트가 되었다. [[MVC]] 아키텍처를 적용하는 개발자를 위해 자바 서블릿 API를 사용하고 확장하였다. 아파치 재단으로는 2000년 5월에 이관되었다.<ref name="특징">장스, 〈[https://m.blog.naver.com/PostView.nhn?blogId=tinatan&logNo=70165549411&proxyReferer=https%3A%2F%2Fwww.google.com%2F Struts 1 : 스트러츠란 무엇인가]〉, 《네이버 블로그》, 2013-04-12</ref> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == 스트럿츠란 무엇인가 == | |
− | + | '''아파치 스트럿츠(Apache Struts)'''라는 것은 결국 서로의 부분을 디자이너의 영역과 프로그래머의 영역 전체적인 설정과 구조를 서로 분리하자는 목적에서 나온 것이다.<ref>SENS, 〈[https://sens.tistory.com/187 스트럿츠(Struts)란?]〉, 《티스토리》, 2012-11-26</ref> 쉽게 말하면 관리자,개발자들 각자의 영역을 분리하는 것이다. 이를 [[MVC]]라고 한다. Model, View, Controller 를 뜻한다. | |
− | == | ||
− | '''스트럿츠''' | ||
+ | == 경쟁 == | ||
+ | '''스트럿츠'''는 성숙화,문서화가 잘 되어 있고, 자바 애플리케이션으로 [[백 엔드]]를 개발하기 위한 대중적인 프레임워크이다. 하지만 새로운 '경량' MVC 프레임워크의 도전자들이 등장한다. 그리하여 스트럿츠의 치열한 경쟁이 시작된다. | ||
=== 스트럿츠2 === | === 스트럿츠2 === | ||
스트럿츠는 다른 경량 MVC 프레임워크들의 도전을 받았다. 이는 스트럿츠를 발전시키게 된다. 스트럿츠는 웹 애플리케이션을 기능 및 모듈단위로 분리함으로써 보다 쉽게 확장하고 유지 보수를 가능하도록 만들었다.<ref name="특징"></ref> 하지만 초보자들이 처음부터 다루기에는 무리가 있다는 단점이 있었다. 이 때문에 스트럿츠2는 단순한 버전업을 넘어서 완전히 바뀌게 된다. | 스트럿츠는 다른 경량 MVC 프레임워크들의 도전을 받았다. 이는 스트럿츠를 발전시키게 된다. 스트럿츠는 웹 애플리케이션을 기능 및 모듈단위로 분리함으로써 보다 쉽게 확장하고 유지 보수를 가능하도록 만들었다.<ref name="특징"></ref> 하지만 초보자들이 처음부터 다루기에는 무리가 있다는 단점이 있었다. 이 때문에 스트럿츠2는 단순한 버전업을 넘어서 완전히 바뀌게 된다. | ||
− | 스트럿츠2는 | + | 스트럿츠2는 웹워크를 결합시켰다. 웹워크에서 단순함과 개발 툴 친화성 등 장점들을 스트럿츠로 가져와서 유용하고 강한 프레임워크를 탄생시켰다. 애플리케이션에 대한 전반적인 영역. 구축에서 배포, 유지보수 까지 풀 개발 사이클을 가지게끔 디자인된 프레임워크다. |
+ | [[파일:Struts2.png|썸네일|500픽셀|struts2 흐름]] | ||
=== 스트럿츠1과 스트럿츠2의 차이점 === | === 스트럿츠1과 스트럿츠2의 차이점 === | ||
− | + | * [[서블릿 방식]]에서 [[필터방식]]으로 변화 | |
− | |||
− | * [[서블릿 방식]]에서 [[ | ||
* Action 부분이 [[POJO(Plain Old Java Object)]]로 구현 가능해짐 | * Action 부분이 [[POJO(Plain Old Java Object)]]로 구현 가능해짐 | ||
− | * 서블릿 코드를 | + | * 서블릿 코드를 신경쓰지 않고 손쉽게 MVC 패턴의 개발이 가능해짐 |
* XML 기반의 환경설정, 태그 라이브러리 지원, 국제화 지원 등 다양한 유틸리티들을 제공 | * XML 기반의 환경설정, 태그 라이브러리 지원, 국제화 지원 등 다양한 유틸리티들을 제공 | ||
=== 스프링과의 차이점 === | === 스프링과의 차이점 === | ||
− | 스트럿츠는 웹에 특화된 프레임워크이다. 반면 [[스프링]] 프레임워크는 자바 애플리케이션에도 특화된 프레임워크라는 점이 가장 큰 차이점이라고 볼 수 있다. 스프링은 MVC 환경에 특화된 서블릿, 컨트롤러, 뷰리졸버 등을 제공하는데, 이러한 것은 웹 환경을 지원하기 위해 제공하는 것이다. 자바빈으로 | + | 스트럿츠는 웹에 특화된 프레임워크이다. 반면 [[스프링]] 프레임워크는 자바 애플리케이션에도 특화된 프레임워크라는 점이 가장 큰 차이점이라고 볼 수 있다. 스프링은 MVC 환경에 특화된 서블릿, 컨트롤러, 뷰리졸버 등을 제공하는데, 이러한 것은 웹 환경을 지원하기 위해 제공하는 것이다. 자바빈으로 등록도니 것들은 웹 환경이 아닌 어디에서든 사용 가능하다. 즉, 외부 인터페이스에 확장까지 고려한 프레임워크이다.<ref>S.Zinlee, 〈[https://zinlee.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81%EA%B3%BC-%EC%8A%A4%ED%8A%B8%EB%9F%BF%EC%B8%A0%EC%9D%98-%EC%B0%A8%EC%9D%B4 스프링과 스트럿츠의 차이]〉, 《티스토리》, 2013-12-10</ref> |
== 전망 == | == 전망 == | ||
− | 아파치 스트럿츠2(Apache Struts2)에서 임의 코드 실행이 가능한 취약점이 발견되었다. 취약점은 Struts REST 플러그인을 사용해 [[XML]] 페이로드를 처리할 때 발생하는 원격 코드 실행 취약점이다. 해당 취약점은 Apache Struts 2.3.33, 2.5 ~ 2.5.12 까지 취약점이 발견되었다.<ref>김경애 기자, 〈[https://www.boannews.com/media/view.asp?idx=56872 Apache Struts2 원격 코드 실행 취약점 발견! 업데이트 필수]〉, 《보안뉴스》, 2017-09-07</ref> 해당 취약점은 중국에서 한국 인터넷 대상 | + | 아파치 스트럿츠2(Apache Struts2)에서 임의 코드 실행이 가능한 취약점이 발견되었다. 취약점은 Struts REST 플러그인을 사용해 [[XML]] 페이로드를 처리할 때 발생하는 원격 코드 실행 취약점이다. 해당 취약점은 Apache Struts 2.3.33, 2.5 ~ 2.5.12 까지 취약점이 발견되었다.<ref>김경애 기자, 〈[https://www.boannews.com/media/view.asp?idx=56872 Apache Struts2 원격 코드 실행 취약점 발견! 업데이트 필수]〉, 《보안뉴스》, 2017-09-07</ref> 해당 취약점은 중국에서 한국 인터넷 대상 사이버공격에 이용됐다. 해커그룹이 자동화툴을 만들어 공격을 한 것으로 파악됐다.<ref>임민철 기자, 〈[https://www.zdnet.co.kr/view/?no=20170314100153 아파치 스트럿츠 취약점 노린 공격 확산]〉, 《지디넷코리아》, 2017-03-14</ref> |
− | [[SANS]]의 수장 [[요하네스 울리히 | + | [[SANS]]의 수장 [[요하네스 울리히(Johannes Ullrich)]] 는 스트럿츠의 모든 버전이 지금 취약한 건 아닙니다. 하지만 대다수가 위험한 건 사실이죠. 그러니 스트럿츠의 사용 현황을 점검해볼 필요가 있습니다.”라고 말한만큼 스트럿츠의 취약점에 대해서는 많은 기업들은 심각성을 느끼고 있고, 공격당하는 것을 막기 위해 발빠르게 움직이고 있다.<ref>문가용 기자, 〈[https://www.boannews.com/media/view.asp?idx=53773 세계로 뻗는 스트럿츠 취약점, 각지에서 빨간불 켜져]〉, 《보안뉴스》, 2017-03-10</ref> |
{{각주}} | {{각주}} | ||
60번째 줄: | 49번째 줄: | ||
* [[MVC]] | * [[MVC]] | ||
− | {{ | + | {{프로그래밍|검토 필요}} |