본문 바로가기

사이드 프로젝트 아카이빙

[HTTP method] DELETE method 의견 및 사용

반응형

개요

  • API 규격을 정의하며 DELETE method도 사용할 수 있으면 좋겠다는 의견
  • DELETE method는 서버의 리소스를 제거할 수 있다는 점에서 보안상 취약하다는 얘기를 들음
    • 자료 확인 후 추후 답변 드린다고 안내
  • 확인 결과, 적절한 인증과 권한 확인 절차가 있다면 문제없음
  • 시도해 보자

내용

#1 DELETE 메소드는 정말 위험할까?

  • MDN에서 서버 상태에 따른 “안전함”을 정의하는 개념이 있음
  • 요청을 서버로 전송할 때 서버의 리소스를 변경하지 않는 method라면 “안전” 그렇지 않으면 “위험”으로 보는 개념
 

안전함 (HTTP 메서드) - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

 

developer.mozilla.org

  • 그런데 POST도 서버의 리소스를 변경하는데POST는 왜 허용하는 걸까?
    • 안전하지 않는다는 이유로 사용하지 않는다면 어떻게 API를 만들어 낼 수 있을까

#2 POST는 필수 DELETE는 선택

[ POST 는 새로운 리소스를 생성해주는 측면에서 필수 ]

  • 수정을 “새로운 상태로 생성”한다는 측면으로 바라본다면 PUT 대체 가능
  • 삭제를 “공란의 상태로 생성”한다는 측면으로 바라본다면 DELETE 대체 가능
  • 일종의 말장난..

[ DELETE는 리소스를 삭제하는 명확한 목적과 용도로 사용 ]

  • 다르게 말하면 삭제만 가능하다는 의미
  • 서버에 DELETE method를 허용한다면 외부 공격자에 의해서 데이터가 삭제될 수 있는 여지가 있다고 함
  • 극소수의 API에서만 DELETE를 사용하면 괜찮지 않을까란 질문이 나올 수 있는데, 그렇지 않다고 대답할 수 있음
    • DELETE method를 사용하는 API가 단 1개 있다고 하더라도 이를 위해서 DELETE 요청을 방화벽에서 통과시켜 줘야 함
    • 이를 인지한 외부 공격자는 API를 변조해서 DELETE 요청을 날릴 수 있게 되는 것
  • 따라서 많은 서버들은 GET / POST 이외의 method들은 원천 차단함image
 

결제 시스템의 SDK와 API 디자인 - SLASH 21 | Growth log

PG 연동 개발자들에게 쉽고 빠른 가이드 제공을 위해, 20년 동안 유지된 기존 시스템에 추상화 레이어를 만들고 SDK와 API를 설계했던 경험을 공유합니다. 추가로 인터페이스의 일관성과 예측 가능

injun-woo30000.gitbook.io

 

#3 지금은 다르지 않을까?

[ 어쩌면 DELETE는 위험하다는 얘기가 낡은 것이지 않을까? ]

  • 그때는 맞을 수 있지만 지금은 아닐 수 있지 않을까?
  • 보안이 취약하다면 POST는 보안에 안전할까?
    • 동일하게 위험함
    • 그렇기 때문에 인증/인가 정보를 같이 담아서 보내는 것
  • method로 보안 취약점을 구별하지 않음image
 

PUT, DELETE 등의 http 메소드 질문있습니다. - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

 

[API 설계] DELETE request 요청/처리/응답에 관한 소소한 고민

👨🏻‍💻 들어가며 최근 제한된 시간 안에 RESTful API를 설계하고 구현해야 했습니다. 그 와중에 아직 잘 숙지가 되지 않았는지 묘하게 위화감이 있는 부분이 있었는데요, 바로 DELETE 요청 메서

humblego.tistory.com

 

결론

한 번 시도해도 되겠다.
반응형