<computer_science>/네트워크 Network

[파편 조각] GET 메서드 요청이 서버의 데이터를 변경할 수 있게 하면 안 되는 이유;;

Rizingblare 2023. 8. 24. 00:31

230824

클라이언트의 GET 메서드 요청이 서버의 데이터를 변경할 수 있도록 하면 안 된다.

우리는 보통 GET 메서드 요청에는 주로 출력(READ)을 위한 동작만 수행하도록 하지 유저의 데이터를 변경하거나 서버의 다른 데이터를 변경하는 등 서버의 데이터를 변경할 수 있도록 로직을 구현하지 않는다.

하지만 통상적으로 그렇게 하니까 따라할 뿐이지 정확한 이유는 모르는 사람이 있을 수 있다.

지금부터 GET 요청이 서버의 데이터를 변경할 수 있도록 하면 안 되는
보다 직관적인 이유에 대해서 알아보자.

우선, 우리는 여기저기서 하이퍼링크를 걸 수 있는데 하이퍼링크는 모두 해당 도메인 주소에 GET 요청을 보내는 것이다.
뿐만 아니라 우리가 주소창에 URL을 입력하는 행위는 GET 요청으로 처리된다.

그렇다면 여기서 문제가 발생한다.
개발자가 본인의 이용자들을 믿고 사이트를 구현된 비즈니스 로직에 따라 정상적으로 사용하면 등급을 올리거나 포인트를 적립해주는 등, 유저의 데이터를 변경할 수 있도록 했다면,
아니면 제한된 이용자들을 대상으로 하는 귀중한 자료들을 제공한다면

만약 우리가 해당 URL만 알아내거나 추측해낸다면 브라우저를 하나 열고 주소창에 똑같이 입력하기만 해도 같은 효과를, 같은 권한을 누릴 수 있는 것이다.

이건 분명히 매우 위험하다.