https URL의 사용자 이름 및 비밀번호
URL을 고려하십시오 : https : // foo : password@example.com
위의 예에서 사용자 이름 / 비밀번호 부분 이이 질문에 정의 된대로 "URL 매개 변수"로 규정 됩니까?
호스트 앞에 사용자 이름과 암호를 입력하면이 데이터가 서버로 전송되지 않습니다. 대신 사용 된 인증 스키마에 따라 요청 헤더로 변환됩니다. 대부분의 경우 이것은 아래에서 설명하는 기본 인증 이 될 것 입니다. 유사한 (그러나 훨씬 덜 사용되는) 인증 체계는 오늘날 유사한 보안 기능을 제공하는 Digest Auth 입니다.
기본 인증을 사용하면 질문의 HTTP 요청은 다음과 같습니다.
GET / HTTP/1.1
Host: example.com
Authorization: Basic Zm9vOnBhc3N3b3Jk
여기에 보이는 해시와 같은 문자열은 다음과 같이 브라우저에 의해 생성됩니다 base64_encode(username + ":" + password).
HTTPS 전송의 외부인에게는이 정보가 숨겨집니다 (HTTP 수준의 다른 모든 정보). 하지만 클라이언트와 모든 중간 서버에 대한 로깅은주의해야합니다. 사용자 이름은 일반적으로 서버 로그에 표시되지만 암호는 표시되지 않습니다. 그러나 이것은 보장되지 않습니다. 예를 들어 클라이언트에서 해당 URL을 호출 curl하면 사용자 이름과 암호가 프로세스 목록에 명확하게 표시되고 bash 기록 파일에 나타날 수 있습니다.
ayush 에 의한 접근 방식 을 사용할 때 사용자 이름과 암호는 웹 서버, 응용 프로그램 서버, 캐시 등의 서버 로그에 항상 표시 됩니다. 이는 응용 프로그램 서버와 같이 암호화되지 않은 http 데이터를 읽을 수있는 서버에만 적용됩니다.
기본 인증은이 작은 사용자 이름 / 암호 팝업을 표시하여 브라우저에 의해 표준화되고 구현됩니다. GET 또는 POST를 통해 전송 된 HTML 양식에 사용자 이름 / 암호를 입력 할 때 모든 로그인 / 로그 아웃 논리를 직접 구현해야합니다 (이는 이점이 될 수 있음). 그러나 GET 매개 변수로 사용자 이름과 비밀번호를 전송 해서는 안됩니다 . 필요한 경우 대신 POST를 사용하십시오. 은 기본적으로이 데이터의 로깅을 방지합니다.
오늘날 일반적으로 사용되는 사용자 / 암호 입력 양식 및 후속 쿠키 기반 세션을 사용하여 인증 메커니즘을 구현할 때 암호가 POST 요청 또는 위의 표준화 된 인증 체계 중 하나로 전송되는지 확인해야합니다.
결론적으로 HTTPS를 통해 데이터를 전송하는 것이 안전하다고 말할 수 있습니다. 암호가 예기치 않은 장소에 나타나지 않도록주의하는 한. 그러나이 조언은 어떤 방식 으로든 모든 암호 전송에 적용됩니다.
참조 URL : https://stackoverflow.com/questions/4980912/username-and-password-in-https-url
'Program Club' 카테고리의 다른 글
| memcpy를위한 향상된 REP MOVSB (0) | 2021.01.07 |
|---|---|
| 페이징이 활성화되고 확대 / 축소 된 UIScrollView 이미지 / 사진 뷰어 (0) | 2021.01.07 |
| VBA의 다중 스레딩 (0) | 2021.01.07 |
| SVN에서 태그와 분기의 차이점은 무엇입니까? (0) | 2021.01.07 |
| win API를 사용하여 HRESULT 값의 문자열 표현을 얻는 방법이 있습니까? (0) | 2021.01.07 |