HTTP 양식에서 HTTPS로 제출하는 것이 안전합니까?
https를 통해 http 양식에서 제출할 수 있습니까? 안전해야하는 것처럼 보이지만 중간자 공격을 허용합니다 ( 여기에 좋은 논의가 있습니다 ). http 페이지에서 로그인 할 수 있지만 https 게시물을 작성하는 mint.com 과 같은 사이트가 있습니다 . 내 사이트에서 요청은 http 방문 페이지가 있지만 안전하게 로그인 할 수 있도록하는 것입니다. 가능한 보안 위험을 감수 할 가치가 없으며 모든 사용자가 보안 페이지로 이동하여 로그인하도록해야합니까 (또는 랜딩 페이지를 보안해야합니까)?
전체 트랜잭션에 HTTPS를 사용 하지 않을 이유가 있습니까? 아주 좋은 것을 찾을 수 없다면 그것을 사용하십시오!
프로토콜을 전환하는 것보다 간단합니다.
MITM 위험은 현실입니다.
링크를 따라 가면 사용자 "Helios"는 100 % HTTPS를 사용하는 것이 사용자에게 훨씬 덜 혼란 스러워진다는 훌륭한 지적을합니다.
http 페이지에서 https 페이지로 양식을 게시하면 가장 간단한 용어로 전송 될 때 양식의 데이터가 암호화됩니다. man-in-the-middle 공격이 있으면 브라우저가 경고합니다.
그러나 원본 http 양식이 중간자 (man-in-the-middle)의 대상이되었고 https 포스트 백 주소가 공격자에 의해 수정 된 경우 경고가 표시되지 않습니다. 데이터는 여전히 실제로 암호화되지만 중간자 공격자는 암호를 해독하고 (처음에 키를 보냈기 때문에) 데이터를 읽을 수 있습니다.
또한 양식이 다른 수단 (스크립팅 된 연결)을 통해 항목을 다시 전송하는 경우 양식이 게시되기 전에 암호화되지 않은 데이터가 유선을 통해 전송 될 가능성이 있습니다 (좋은 웹 사이트는 어떤 종류의 민감한 데이터로도이를 수행하지 않습니다). .
이런 종류의 문제는 특히 로그인이 선택 사항 인 사이트에서 인터넷 전체에 나타납니다. 그러나 매우 미묘한 이유로 본질적으로 안전하지 않으며 사용자에게 잘못된 보안 감각을 제공합니다. 최근에 codinghorror.com 에 대한 기사가 있다고 생각 합니다.
위험은 " https : // xxx " 의 게시 대상을 사용하여 페이지를 보내는 동안 해당 참조가 발생하는 페이지는 안전하지 않으므로 공격자가 어떤 URL을 가리 키도록 전송 중에 수정할 수 있습니다. 소원. 따라서 귀하의 사이트를 방문하는 경우 내 자격 증명이 보안 주소에 게시되고 있는지 확인하기 위해 출처를 확인해야하며 해당 확인은 해당 특정 제출에 대해서만 관련이 있습니다 . 내일 돌아 오면 페이지의 특정 전달이 공격 당하고 게시물 대상이 전복되었을 수 있으므로 소스를 다시 확인해야합니다. 매번 확인하지 않으면 게시물 대상이 전복 된 것을 알 때 쯤이면 너무 늦음-이미 내 자격 증명을 공격자의 URL로 보냈습니다.
로그인 페이지에 대한 링크 만 제공 해야 합니다. 그리고 로그인 페이지와 그 이후의 모든 것은 로그인되어있는 한 HTTPS 여야합니다. 그리고 실제로는 그렇게하지 않을 이유가 없습니다. SSL의 부담은 초기 협상에 있습니다. 후속 연결은 SSL 세션 캐싱을 사용하며 링크 데이터에 사용되는 대칭 암호화는 실제로 매우 낮은 오버 헤드입니다.
IE 블로그 설명 : 중대한 실수 # 1 : 비 HTTPS 로그인 페이지 (HTTPS 페이지에 제출하는 경우에도)
- 사용자는 양식이 HTTPS를 통해 제출되고 있음을 어떻게 알 수 있습니까? 대부분의 브라우저에는 이러한 UI 큐가 없습니다.
- 사용자가 올바른 HTTPS 페이지로 이동한다는 것을 어떻게 알 수 있습니까? 로그인 양식이 HTTP를 통해 전달 된 경우 서버와 클라이언트간에 변경되지 않았 음을 보장 할 수 없습니다.
Jay와 Kiwi는 MITM 공격에 대해 옳습니다. 그러나 공격자가 양식을 깨고 오류 메시지를 표시 할 필요가 없다는 점에 유의하는 것이 중요합니다. 공격자는 대신 JavaScript를 삽입하여 양식 데이터를 두 번, 한 번은 사용자에게 보낼 수 있습니다.
그러나 솔직히, 공격자가 로그인 페이지를 가로 채서 비행 중에 수정할 가능성이 얼마나되는지 물어봐야합니다. (a) SSL 세션에서 MITM 공격 해협을 수행하고 사용자가 "OK"를 눌러 계속하기를 바라는 위험과 비교하면 어떻습니까? (b) SSL 로의 초기 리디렉션 (예 : http://example.com 에서 https://example.com으로 ) 에서 MITM을 수행하고 대신 공격자가 제어하는 https://doma1n.com으로 리디렉션 ; (c) 사이트 어딘가에 XSS, XSRF 또는 SQL 삽입 결함이 있습니다.
예, SSL에서 로그인 양식을 실행하는 것이 좋습니다. 그렇게하지 않을 이유가 없습니다. 그러나 그렇지 않다면 나는 크게 걱정하지 않을 것입니다. 아마도 훨씬 낮은 매달려있는 과일이있을 것입니다.
최신 정보
위의 답변은 2008 년의 것입니다. 그 이후로 많은 추가 위협이 분명해졌습니다. 예를 들어 WiFi 핫스팟 ( 근처의 모든 사람이 해당 공격을 차단할 수있는 곳)과 같은 신뢰할 수없는 임의 네트워크에서 사이트에 액세스합니다 . 이제는 로그인 페이지와 전체 사이트를 암호화해야합니다. 또한 이제 초기 리디렉션 문제 (HTTP Strict Transport Security)에 대한 솔루션이 있습니다. 오픈 웹 애플리케이션 보안 프로젝트는 몇 가지 모범 사례 가이드 사용할 수 있습니다.
이 게시물 이 핵심입니다. 예, 사용자의 데이터가 전송되면 안전하게 어딘가에 도착한 것입니다. 그러나 귀하의 사이트가 어딘가에 있다고 믿을 이유가 없습니다. 공격자는이 시점에서 각 방향으로 이동하는 데이터를 듣기 만하는 것이 아닙니다. 그는 사용자 세션의 다른 쪽 끝이 될 것입니다. 귀하의 사이트는 사용자가 양식을 제출하는 것을 결코 귀찮게 생각하지 않을 것입니다.
저에게 (최종 사용자로서) HTTPS 세션의 가치는 데이터가 암호화된다는 것뿐만 아니라 내가 내 비밀 정보를 입력하는 페이지가 내가 원하는 곳에서 왔는지 확인하는 것입니다. 에.
HTTPS가 아닌 세션에 양식이 있으면 이러한 보증이 무효화됩니다.
(나는 압니다-이것은 양식이 MITM 공격을 받는다는 것을 말하는 또 다른 방법입니다).
아니요, HTTP에서 HTTPS로 이동하는 것은 안전하지 않습니다. 요청의 시작 및 결과 지점은 보안 채널을 설정하고 활용하려면 HTTPS 여야합니다.
로그인 페이지에 대한 링크 만 제공한다고 제안하는 모든 사람들은 MITM 공격을 사용하여 링크를 쉽게 변경할 수 있다는 사실을 잊고있는 것 같습니다.
위의 모든 것에서 놓친 가장 큰 것 중 하나는 홈 페이지에 로그인을 배치하는 일반적인 추세가 있다는 것입니다 (사용자 경험 추세의 큰 추세).
여기서 큰 문제는 Google이 정당한 이유가있는 보안 페이지를 검색하는 것을 좋아하지 않는다는 것입니다. 따라서 모든 개발자가 보안 페이지를 모두 보호하지 않는 이유를 궁금해하는 모든 개발자는 페이지를 Google에 표시하지 않으려면 모든 것을 보호해야합니다. 그렇지 않으면 http에서 https로 게시하는 두 번째로 좋은 옵션은이 시점에서 두 가지 악 중 더 적은 것입니까?
이 질문에 대한 주요 고려 사항은 사용자가 알고있는 URL과 브라우저가 기본적으로 대체하는 프로토콜 체계 (http :)와 관련이 있다고 생각합니다.
이 경우 암호화 된 채널을 보장하려는 사이트의 정상적인 동작은 http : // home-page 가 https : // home-page로 리디렉션되도록하는 것 입니다. 여전히 스푸핑 / MitM 기회가 있지만 DNS 중독에 의한 경우 위험은 https : URL로 시작하는 경우보다 높지 않습니다. 다른 도메인 이름이 돌아 오면 걱정할 필요가 있습니다.
이것은 아마도 충분히 안전 할 것입니다. 결국, MitM을 대상으로하는 경우 키보드 로거, 로컬 HOSTS 파일 및 이미 소유중인 시스템과 관련된 보안 트랜잭션에 대해 알아내는 모든 종류의 다른 방법에 대해 걱정하기 시작할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/274274/is-it-secure-to-submit-from-a-http-form-to-https
'IT박스' 카테고리의 다른 글
ILMerge를 Visual Studio 빌드 프로세스에 통합하여 어셈블리를 병합하는 방법은 무엇입니까? (0) | 2020.10.27 |
---|---|
numpy 배열의 n 번째 항목마다 서브 샘플링 (0) | 2020.10.27 |
'const auto'에는 어떤 의미가 있습니까? (0) | 2020.10.27 |
함수에서 키워드 사용-PHP (0) | 2020.10.27 |
git diff를 사용하여 줄 번호를 추가하고 수정하려면 어떻게해야합니까? (0) | 2020.10.27 |