developer tip

HTTP POST는 얼마나 안전합니까?

optionbox 2020. 11. 20. 08:52
반응형

HTTP POST는 얼마나 안전합니까?


POST는 로그인 자격 증명을 보낼 수있을만큼 안전합니까?

아니면 SSL 연결이 필수 입니까?


SSL은 필수입니다. POST는 암호화되지 않은 상태로 전송되기 때문에 GET보다 안전하지 않습니다. SSL은 전체 HTTP 통신을 처리하고 클라이언트와 서버간에 전송되는 HTTP 데이터를 암호화합니다.


<shameless plug>HTTP 요청의 모양과 GET 요청이 POST 요청과 어떻게 비교되는지 자세히 설명 하는 블로그 게시물 이 있습니다. 간결함을 위해 GET :

GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF

및 POST :

POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123

(CRLF는 단지 개행입니다)

보시다시피 요청이 형성되는 방식 *의 관점에서 유일한 차이점은 POST 요청이 POST라는 단어를 사용하고 양식 데이터가 요청 본문과 URI로 전송된다는 것입니다. 따라서 HTTP POST를 사용하는 것은 모호한 보안입니다. 데이터를 보호하려면 SSL을 사용해야합니다.

*이 참고 있는 다른 차이 .


상황에 따라 다르지만 자격 증명을 가로채는 데 비용이 얼마나 들까 요?

소프트웨어 Q + A 사이트에 대한 로그인 인 경우 SSL이 필요하지 않을 수 있으며 온라인 뱅킹 사이트이거나 신용 카드 데이터를 저장하는 경우 SSL이 필요하지 않을 수 있습니다.
이것은 기술적 인 결정이 아닌 사업입니다.


HTTP POST는 암호화되지 않으며, 네트워크 스니퍼, 프록시에 의해 가로 채거나 사용자 정의 된 로깅 수준으로 서버의 로그에서 유출 될 수 있습니다. POST 데이터가되지 않기 때문에 예, POST 더 GET보다 데는 보통 프록시 또는 서버에 기록되지만 그렇지 확보 . 암호 또는 기타 기밀 데이터를 보호하려면 POST 전에 SSL을 사용하거나 데이터를 암호화해야합니다. 또 다른 옵션은 브라우저에서 다이제스트 인증을 사용하는 것입니다 (RFC 2617 참조). (홈에서 재배 한) 암호화는 재생 공격을 방지하기에 충분하지 않습니다. 암호화하기 전에 nonce와 다른 데이터 (예 : 영역)를 연결해야합니다 (다이제스트 인증에서 수행되는 방법은 RFC 2617 참조).


SSL은 필수입니다 :)

HTTP Post는 일반 텍스트로 전송됩니다. 예를 들어 Fiddler를 다운로드하고 사용하여 HTTP 트래픽을 감시합니다. 전체 게시물을 쉽게 볼 수 있습니다 (또는 WireShark과 같은 네트워크 트래픽 모니터를 통해).


안전하지 않습니다. POST는 GET만큼 쉽게 스니핑 될 수 있습니다.


아니요 ... POST는 전혀 안전하지 않습니다. SSL은 필수입니다.

POST는 쿼리 문자열에서 매개 변수를 효과적으로 숨 깁니다. 이러한 매개 변수는 브라우저와 끝점 사이의 트래픽을보고있는 누구나 선택할 수 있습니다.


가장 안전한 방법은 자격 증명을 전혀 보내지 않는 것입니다.

다이제스트 인증 을 사용하는 경우 SSL은 필수 아닙니다 .

(주의 : HTTP를 통한 다이제스트 인증이 HTTPS를 통한 POST를 사용하는 것보다 항상 더 안전하다는 것을 의미하지는 않습니다.)


POST는 일반 텍스트입니다.

보안 연결은 필수입니다.

이것이 바로 보안 연결이라고하는 이유입니다.


아니요, SSL을 사용합니다.

POST를 사용하면 SSL을 사용하지 않는 한 값이 일반 텍스트로 제출됩니다.


HTTP GET과 HTTP POST의 유일한 차이점은 데이터가 인코딩되는 방식입니다. 두 경우 모두 일반 텍스트로 전송됩니다.

로그인 자격 증명에 대한 모든 종류의 보안을 제공하려면 HTTPS가 필수입니다.

HTTPS를 제공하기 위해 값 비싼 인증서가 필요하지 않습니다. 약 $ 20USD에 대한 매우 기본적인 인증서를 발급하는 많은 제공자가 있습니다. 더 비싼 것은 전자 상거래 사이트에서 더 큰 관심사 인 신원 확인을 포함합니다.


모든 데이터가 일반 텍스트로 "이동"하므로 POST 요청만으로는 안전하지 않습니다.

보안을 위해 SSL이 필요합니다.


POST data is sent in plain text if you are using an unencrypted HTTP connection. IF this is secure enough depends on your usage (hint: it's not).

If both the server, the client machine and ALL MACHINES BETWEEN THEM are part of a controlled, fully trusted network, this may be ok.

Outside of these very limited circumstances (and sometimes even within them) plain text authentication is asking for trouble.


Please see this great article:

Protect Against Malicious POST Requests

https://perishablepress.com/protect-post-requests/

참고URL : https://stackoverflow.com/questions/1008668/how-secure-is-a-http-post

반응형