가 curl -u username:password http://example.com
보안?
그렇지 않은 경우 다른 사람이 비밀번호를 얻는 방법에 대해 간단히 설명 할 수 있습니까?
ps -ef
가 실행중인 프로세스를 보는 데 사용할 수 있으므로 이러한 명령은 안전하지 않습니다 . curl -u username:password http://example.com
목록에 표시 되면 대상, 사용자 이름 및 비밀번호가 노출 된 것입니다.
가 curl -u username:password http://example.com
보안?
그렇지 않은 경우 다른 사람이 비밀번호를 얻는 방법에 대해 간단히 설명 할 수 있습니까?
ps -ef
가 실행중인 프로세스를 보는 데 사용할 수 있으므로 이러한 명령은 안전하지 않습니다 . curl -u username:password http://example.com
목록에 표시 되면 대상, 사용자 이름 및 비밀번호가 노출 된 것입니다.
답변:
cURL은 기본적으로 HTTP 프로토콜이 비밀번호를 일반 텍스트로 보내는 기본 인증으로 설정 되므로 안전하지 않습니다 . username:password
문자열 을 지정 하면 HTTP 헤더에서 BASE64 문자열 로 변환됩니다 .
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
HTTP 트래픽을 가로 챌 수있는 사람 (제공자, 귀하와 동일한 무선 AP에 액세스하는 사람)은 온라인 BASE64 변환기 를 사용하여 비밀번호를 복구 할 수 있습니다 .
HTTPS 프로토콜은이 헤더가 전송되기 전에 암호화 된 연결을 설정하여 암호를 공개하지 못하게하여 상황을 개선합니다. 그러나 이것은 알 수없는 인증서를 확인하고 보안 예외를 승인하는 등의 요청을받을 때 사용자가주의를 기울이는 경우에만 적용됩니다.
같은 머신의 다른 사용자가 ps -ef
/ proc 파일 시스템, bash 기록 및 터미널 로그에서 명령 인수를 사용할 수 있습니다 (@Lambert의 의견에 감사드립니다). 일부 플랫폼의 cURL은 비밀번호를 숨기려고 시도하므로 예를 들어 ps -ef
비밀번호 대신 공백이 표시 될 수 있습니다. 그러나 cURL faq 에 설명 된대로 비밀번호를 명령 행 인수로 전달하는 대신 cURL에 직접 비밀번호를 입력하도록하는 것이 좋습니다 .
ps
해당 콘텐츠가 취약한 덮어 쓰기가 수행되기 전에 시작되는 기간이 있습니다.
안전하지 않습니다. 명령 줄 매개 변수는 모든 사용자가 볼 수 있습니다.
ps
명령 및 /proc
파일 시스템을 통해 모든 사용자에게 표시됩니다 . 명령이 빨리 완료되면 위험이 줄어들지 만 여전히 위험에 처해 있습니다.
--netrc-file 매개 변수를 사용하면보다 안전한 방식으로 수행 할 수 있습니다.
예를 들어 : vi / root / my-file
machine example.com
로그인 USERNAME
비밀번호 비밀번호
파일을 저장하고 닫습니다
curl --netrc-file / root / my-file http://example.com
짧은 대답은 아니요 ...하지만 ....
서버 측 옵션이 없으면 보안을 강화할 수 있습니다.
이들 중 어느 것도 HTTP를 사용하는 브라우저보다 안전하지 않습니다.