문제
이것이 일부 사이트에 로그인 할 때 내 브라우저가 보낸 내용입니다.
POST http://www.some.site/login.php HTTP/1.0 User-Agent: Opera/8.26 (X2000; Linux i686; Z; en) Host: www.some.site Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: en-US,en;q=0.9 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Referer: http://www.some.site/ Proxy-Connection: close Content-Length: 123 Content-Type: application/x-www-form-urlencoded lots_of_stuff=here&e2ad811=my_login_name&e327696=my_password&lots_of_stuff=here
해당 사이트의 로그인 이름과 비밀번호를 스니핑 할 수 있다고 말할 수 있습니까? 어쩌면 내 란에 있을까요?
그렇다면 (LAN에서도) 충격을 받았습니다. 나는 사용한다고 생각했다
<input type="password">
모든 캐릭터가 ' *'처럼 보이게하는 것보다 더 많은 일을했습니다.
추신이면 Netcat (Linux에서)과 함께 연주하고 연결했습니다.
브라우저 <=> netcat (여기 로그인) <=> proxy <=> remote_site
해결책
전송 된 모든 데이터는 HTTP 연결을 서버로가는 경로 (중간 공격의 사람)에서 볼 수 있습니다.
type = "password"는 화면에 문자를 숨기고 컴퓨터의 다른 프로그램도 데이터를 읽을 수 있습니다.
데이터를 보호하는 유일한 방법은 Trought SSL (HTTP 대신 HTTPS)을 보내는 것입니다.
다른 팁
type = "password"는 화면에 문자를 숨 깁니다. 스니핑을 중지하려면 연결 (예 : HTTP)을 암호화해야합니다.
HTTPS를 통해 HTTP 연결을 암호화하거나 MD5 및 JavaScript로 구현 된 MD5 및 기타 해싱 알고리즘이있어 클라이언트 측면을 사용하여 암호 클라이언트 측을 보내기 전에 해시 할 수 있으므로 Sniffer가 비밀번호를 읽을 수 있습니다.
예, 귀하의 자격 증명은 ClearText로 전달되며 네트워크 트래픽을들을 수있는 사람은 누구나 스니핑 할 수 있습니다.
포스트 본체의 내용물은 암호화되지 않은 채널로 전송되는 경우 "명확한"것으로 보입니다. HTTP 본체가 스니핑되는 것을 방지하려면 보안 채널을 통해 그렇게해야합니다. HTTPS.