개발 메모장

[Tomcat] HTTP Method 접근 제약 처리 본문

WAS

[Tomcat] HTTP Method 접근 제약 처리

yyyyMMdd 2025. 2. 20. 17:31
728x90

#. PUT, DELETE, TRACE  메서드는 접근 제한으로 설정하는 것이 권고되고 있습니다.

 

#. 또한 현재 제공중인 서비스에서는 GET, POST를 사용하며 그 외 메서드는 사용하지 않고 있습니다.

 

#. 접근할 일도 없는 메서드를 열어 두는 것이 찝찝해서 제약사항으로 관리하도록 수정했습니다.


#. 현 상황 체크

 

  • CMD를 통해 아래의 내용을 입력하여 현재 상태를 확인해보도록 합니다.
telnet localhost {port}
PUT / HTTP/1.0
  • 먼저 telnet에 서비스 중인 도메인 + 포트를 위와 같이 입력하면 까만화면으로 바뀌게 됩니다.

  • 그곳에서 아래 내용을 입력합니다.
    (띄어쓰기 및 대문자로 바꾸셔서 진행하셔야 합니다.)

  • 302 코드를 리턴 받습니다.

#. 해결방법

 

  • tomcat > conf > web.xml에 아래 시큐리티 제약사항을 입력해줍니다.

  • url-pattern은 모든 url에 적용하기 위해 /* 으로 해줍니다.
    (특정 url만 막으려면 * 대신 원하는 url을 입력해주세요.)

  • http-method는 막을 메서드에 대해 작성해줍니다.
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restricted HTTP Methods</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
        <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>

 

 

  • auth-contraint 태그에는 특정 역할을 가진 사용자만 액세스할 수 있도록 권한에 대한 제약을 걸 수 있습니다.
    (아래 예시에 대해 설명하도록 하겠습니다.)
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Page</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    
    <auth-constraint>
        <role-name>ADMIN</role-name>
    </auth-constraint>
</security-constraint>

 

  1. web-resource-collection 는 /admin/* 패턴에 대해서 보호합니다.
  2. auth-constraint 에서는 admin 역할을 가진 사용자만이 액세스 할 수 있도록 지정합니다. 
  3. admin 역할이 없는 사용자가 /admin/* 에 액세스하려고하면 액세스를 거부합니다.

 

  • 위와 같이 적용하고 다시 telnet으로 접근하면 아래와 같이 에러가 발생하게 됩니다.

  • 해당 에러코드에 에러페이지 처리를 했다면 에러페이지 코드와 함께 400번대 오류를 리턴하는 걸 볼 수 있습니다.

 

 

===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!

===========================================================

728x90

'WAS' 카테고리의 다른 글

[Tomcat] Tomcat 사용 시 서버정보 노출 막기  (0) 2023.11.24