1. Requesting이란 무엇인가?
웹에서의 Requesting은 서버로 본인이 가지고 있는 데이터를 전달하기 위해 사용함.
흔히 Requesting의 방식에는 get, post, put, delete, patch라는 다섯가지의 방법이 존재하는데 이 중에서 중요한 get과 post방식에 대하여 설명하고자 한다.
2. GET 방식 (데이터를 가져와서 보여준다, 가져옴의 의미)
두 방법 모두 "데이터를 전달한다"라는 목적에서는 일치하지만 전달하는 방식에서는 차이점이 존재한다. 먼저 get방식이다.
get 방식인지, post 방식인지를 알려면 브라우저 창에 있는 URL을 보면 된다. get방식을 사용하게 되면 위에 있는 그림처럼 입력한 정보가 URL에 노출이 되게 된다. 따라서 입력된 정보가 다 드러나므로 보안 측면에서는 꽝임을 알 수 있다.
get방식은 DB에 추가로 정보를 처리하지 않고 저장된 Data를 단순 요청하는 정도로 사용한다. 정보가 URL(헤더)에 다 들어가 있기 때문에 body가 필요하지 않다.
GET 방식의 특징
1. 한번의 데이터 요청시, 전송 데이터의 양은 주소값+파라미터가 255자로 제한이 된다.
2. 저장된 data를 단순히 요청할 때 사용한다.
3. URL에 그대로 데이터의 이름과 값이 연결되어 표현된다.
ex) http;// 사이트주소/~~?사이트이름=네이버
4. GET방식은 브라우저 히스토리에 남는다.
5. GET요청은 북마크 될 수 있다.
6. GET요청에서는 파라미터가 다 노출되므로 중요한 정보를 다루면 안된다.
7. 데이터를 요청할 때만 사용이 된다.
8. 동일한 연산을 여러번 수행하더라도 동일한 결과가 나온다(멱등이다)
3. POST방식(데이터의 값이나 상태를 바꿔준다, 수행의 의미)
get방식은 보안상 취약하다는 것을 알 수 있었다. post방식은 반대로 보안을 위해 사용이 된다고 볼 수 있다.
입력한 정보를 숨겨야 할 때 (로그인 상황, 중요 데이터 보내는 상황) post 메소드를 수행한다. 위의 그림을 보면 URL에 데이터의 이름과 값이 없어진 것을 볼 수 있다. post방식은 DB에 추가로 서버에서 갱신 작업을 할 때, 서버에서 정보가 가공되어 응답하는 경우에 사용한다. post방식으로 데이터를 전송할 때 정보가 URL(헤더)에 있지 않기 때문에 정보를 body라는 또 다른 공간에 넣어서 전송한다.
POST 방식의 특징
1. 요청 시 데이터 양의 제한이 없다.
2. URL 상에 정보가 나타나지 않아 보안상 좋다.
3. POST요청은 브라우저 히스토리에 남지 않는다.
4. POST요청은 북마크 되지 않는다.
5. 동일한 연산을 여러 번 수행하더라도 결과가 다를 수 있다(멱등이 아니다)
4. GET방식과 POST방식 차이점
표를 이용하여 비교하면 편할 듯 하다.
GET 방식 | POST 방식 | |
세부적인 의미 | 데이터를 가져온다(SELECT) 정보를 가져온다, 조회한다 |
데이터의 값이나 상태를 바꾼다(CREATE, UPDATE) 정보의 변경을 수행한다 |
전달할 수 있는 데이터의 양 | 주소값+파라미터 255자 | 데이터 제한 없음 |
보안 | 취약 | post도 보안에 강한 편은 아니지만 get방식과 비교하였을 때, URL path와 query가 노출되지 않게 body에 넣기 때문에 비교적 강한 편이다. |
데이터 저장 방식 | url(헤더)에 저장 | url(헤더)에는 주소만 저장하고 나머지 정보들은 노출되지 않도록 body에 저장한다. |
사용하는 케이스 | 1. 게시판에서 글의 내용에 대한 목록을 보여주는 경우 2. 게시판에서 글의 내용을 보는 경우 3. 링크를 공유하는 경우(카카오톡의 공유하기) |
게시판의 글을 써서 올리거나 수정하는 경우 |
5. 출처
https://noahlogs.tistory.com/35
https://www.youtube.com/watch?v=iOueE9AXDQQ
'💻 개인공부 💻 > 웹' 카테고리의 다른 글
[ 웹 해킹 ] Introduction of Webhacking (0) | 2021.03.24 |
---|---|
MVC 패턴 구조 (0) | 2020.05.22 |
[웹 기초] 웹 개발을 위한 프론트엔드 VS 벡엔드 용어 정리 (0) | 2020.03.11 |
[웹 오류] The port 8080 is already in use (0) | 2020.03.11 |