URL 및 암호화로 전달 된 HTTP 기본 인증 자격 증명


250

HTTPS 및 HTTP 인증 자격 증명에 대한 질문이 있습니다.

HTTP 인증으로 URL을 보호한다고 가정합니다.

<Directory /var/www/webcallback>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/passwd/passwords
Require user gooduser
</Directory>

그런 다음 HTTPS를 통해 원격 시스템에서 해당 URL에 액세스하여 URL의 자격 증명을 전달합니다.

https://gooduser:secretpassword@www.example.com/webcallback?foo=bar

사용자 이름과 비밀번호가 자동으로 SSL 암호화됩니까? GET과 POST에 대해서도 마찬가지입니까? 이 정보로 신뢰할 수있는 출처를 찾는 데 어려움을 겪고 있습니다.



아주 오래된 질문이지만 그럼에도 불구하고 :이 접근법은 ietf.org/rfc/rfc3986.txt에 의해 사용되지 않습니다 : "userinfo 필드에서"user : password "형식의 사용은 더 이상 사용되지 않습니다."
Madbreaks 2019

답변:


237

사용자 이름과 비밀번호가 자동으로 SSL 암호화됩니까? GET 및 POST에 대해서도 동일합니다.

예, 예

SSL을 사용중인 경우 전체 통신 (호스트 이름의 IP가 아직 캐시되지 않은 경우 DNS 조회를 위해 저장)이 암호화됩니다.


25
+1. URL을 포함한 GET 및 POST가 암호화됩니다. Firebug 및 Tamper 데이터와 같은 도구 는 브라우저의 일부 이기 때문에 암호화되지 않은 결과를 표시 할 수 있으므로 요청을 가로 채기 전에 요청을 가로 챌 수 있습니다. 유선으로 전송되면 모든 것이 암호화됩니다.
Sripathi Krishnan

21
명확하게 말하면 도메인을 제외한 모든 것이 암호화됩니다.
누군가이 문제를

7
완전성을 위해 " Internet Explorer는 웹 사이트 주소 (HTTP 또는 HTTPS URL)에서 사용자 이름 및 비밀번호를 지원하지 않습니다. " HTTP 또는 HTTPS URL에 대해 다음 구문을 지원하는 Internet Explorer 버전 3.0-6.0 만 보입니다. http (s) : //username:password@server/resource.ext 참고 :이 기본 동작 변경은 다른 프로토콜에 영향을 미치지 않습니다. 예를 들어 832894 보안 업데이트를 설치 한 후에도 FTP URL에 사용자 정보를 포함시킬 수 있습니다.
누가

이 답변에는 신뢰할만한 출처 나 추가 설명이 없습니다.
Jens Piegsa

26

예, 암호화됩니다.

장면 뒤에서 일어나는 일을 간단히 확인하면 이해할 수 있습니다.

  1. 브라우저 나 응용 프로그램은 먼저 URL을 분류하고 DNS 쿼리를 사용하여 호스트의 IP를 가져 오려고 시도합니다. 즉, 도메인의 IP 주소 (www.example.com)를 찾기 위해 DNS 요청이 이루어집니다. 이 요청을 통해 다른 정보는 전송되지 않습니다.
  2. 브라우저 또는 응용 프로그램은 DNS 요청에서받은 IP 주소로 SSL 연결을 시작합니다. 인증서가 교환되며 이는 전송 수준에서 발생합니다. 이 시점에서는 응용 프로그램 수준 정보가 전송되지 않습니다. 기본 인증은 HTTP의 일부이며 HTTP는 응용 프로그램 수준 프로토콜입니다. 전송 계층 작업이 아닙니다.
  3. SSL 연결을 설정하면 필요한 데이터가 서버로 전달됩니다. 즉 : 경로 또는 URL, 매개 변수 및 기본 인증 사용자 이름 및 비밀번호.

-5

반드시 사실 일 필요는 없습니다. 그것은 유선으로 암호화되지만 여전히 로그 평문에 도착합니다.


17
어떤 웹 서버가 요청의 사용자 이름과 비밀번호를 기록합니까? 그것은 안전하지 않은 웹 서버의 지옥 일 것입니다.
앤드류 이발소

1
네, 사실이 아닙니다. 아파치에게이 정보를 기록하도록 지시하는 것이 가능할 수도 있지만 기본적으로 그렇게하지는 않습니다.
DougW

27
@Brandon은 쿼리 문자열에서 "URL"을 의미한다고 생각했을 것입니다 (예 :? user = bob & pw = 123hackmeplz). 서버 로그가 끝날 수 있습니다.
Mike Graf

5
관련 : "예를 들어 curl을 사용하여 클라이언트에서 해당 URL을 호출하면 사용자 이름과 비밀번호가 프로세스 목록에 명확하게 표시되고 bash 기록 파일에 나타날 수 있습니다." - stackoverflow.com/a/4981309
호크 아이 파커

1
@ zb226 asker는 구체적으로 자격 증명을 URL에 넣는 것에 대해 언급했습니다.
Lambart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.