GET / POST 무지한 사용에 대한 위험성


Pragmatic AJAX 라는 책을 읽고 있는 중이다. 여러가지 DHTML , AJAX 등에 대한 내용이 담기 책은참 많은데, 이 책을 읽는 동안 여러가지 공감및 생각하게 만드는 꺼리등이 많은것 같다.

아직 다 읽은 건 아니지만, 오늘 버스안에서 읽은 내용중 (상당히 토할껏 같았다) 일부인데, 그동안 개발해오면서 이런방향으로 고민을 한번도 해보지 않았던 …. 내가 당했다면 상당히 당황했었을 교훈을 얻은 것이 있어서 정리해보고자 한다.

그동안은 웹어플리케이션을 만들더라도 폐쇄적인 내부에서만 사용되는 비즈니스 어플리케이션들을 위주로 만들다보니 이런 경우를 당한적이 한번도 없었지만, 책에서 저자는 직접 당한뒤에 깨달음을 얻은 사례를 설명해주고 있다.

웹어플리케이션 제작시 GET/POST 방시을 아무생각없이 혹은 데이타의 사이즈때문에 혹은 파라미터를 감춰달라는 요구 등등 때문에 구분해서 사용해오진 않았는가?

이렇다면 이 책에 나온 얘기가 앞으로 닥칠 황당한 일을 미연에 방지해줄 수 있을테니 꼭 숙지해야 할 것 같다.

[책내용]

웹어플리케이션을 만들어놓고 어느날 고객으로부터 데이타가 마구 사라진다는 얘기를 들었다고 한다. 원인 분석을 해본즉…구글 악셀러레이터때문이었다는 결론을 얻었다는데, 이유는 대부분의 검색엔진 로봇들이 그러하듯이 인덱싱/캐싱을 해서 좀더 빠르게검색 결과를 내보내기 위해서, 페이지내에 있는 링크들을 빠르게 마구 엑세스 하면서 일종의 클릭을 해보는데, 이때 존재하는링크중에 서버의 데이타를 변경/삭제 시키는 링크가 불행히도 “GET” 방식으로 되어있다면 ….

구글 악셀러레이터가 인덱싱하면서 해당 기능을 수행하는 결과를 초래하는 경우가 발생하는 것이다. 이러면 데이타가 사라지기도 하겠다 ㅡㅡ;;

어쨌건 결론은 서버에 뭔가 데이타를 변경시키는 역할을 하는것은 반드시 POST 로 하라는 얘기였다….

외부로 노출되는 서비스를 개발하는 사람이라면, 한번더 생각해볼 얘기다.