오늘 데일리시큐에서 이런 뉴스가 떴다.
http://dailysecu.com/news_view.php?article_id=4811
내용인즉슨, 아파치(Apache)에서 개발한 소프트웨어 ‘struts2’에 존재하는 2개의 크리티컬한 보안취약점(CVE-2013-2251)을 집중적으로 파고도는 공격툴로 인해 중국의 많은 업체들이 피해를 입었다는 것이다. 이를 방비하기 위해 Apache struts팀은 struts 2.3.15.1 버전을 발표했다고 한다.
struts.apache.org/download.cgi#struts23151
그렇다고 라이브러리를 통째로 변경할 수 없는 노릇이고, 기존에 있는 프로젝트를 유지하면서 패치하려면 어떤 파일을 변경해야 할지 헷갈릴 수 있다. 이를 잡기 위한 효과적인 방법을 찾던 중, 중국발 사이트에서 해결법을 발견하였다(http://ee.riaos.com/?p=20004983). 구글 번역기를 이용하여 돌린 결과, 다음과 같은 해결책을 얻을 수 있었다.
---------------------------------------------------------------------------------------------------
1, 라이브러리 패키지 제거
struts2-core-2.0.14.jar,ognl-2.6.11.jar,commons-lang-2.1.jar,xwork-2.0.7.jar
2, 라이브러리 패키지 추가
struts2-core-2.3.15.1.jar,xwork-core-2.3.15.1.jar,ognl-3.0.6.jar,javassist-3.11.0.GA.jar,commons-lang3-3.1.jar
(*주 : 이외에도 commons-*.jar 파일, antlr-2.7.2.jar, freemaker-2.3.18.jar 등의 파일도 변경했다. 기본적으로는 위 파일들이 포함되는 것 같고, 나머지는 case by case인 듯)
lib패키지 다운로드 주소 추가(*주 : 아마도 이 부분은 해당 URL에서 struts를 다운로드 받으라는 것 같다)
http://mirror.bit.edu.cn/apache//struts/binaries/struts-2.3.15.1-all.zip
3, web.xml 수정
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
위 내용을 다음과 같이 변경:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
위 내용 외에도, Validate.xml의 DOCTYPE도 변경해야 한다. 첫 구문을 다음과 같이 수정한다.
---------------------------------------------------------------------------------------------------
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator Config 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
'Java' 카테고리의 다른 글
아규먼트(argument) 와 파라미터(parameter) 의 차이 (0) | 2013.10.17 |
---|---|
Java에서 Linux Shell 명령어 실행하기 (0) | 2013.08.26 |
Java에서 SSH를 통해 리눅스 서버에 명령을 전달하는 코드 (1) | 2013.08.26 |
이클립스에서 다중 스레드 관리하기 (0) | 2013.08.22 |
String.split 과 StringTokenizer의 차이 (0) | 2013.08.12 |