웹소켓 평문 전송 (Insecure WebSocket)
Cleartext Transmission of Sensitive Information
설명
웹소켓(WebSocket) 연결을 비보안 프로토콜(ws://)로 설정할 경우, 데이터가 암호화되지 않고 평문으로 전송됩니다. 악의적인 사용자가 네트워크 상에서 민감한 정보를 도청하거나 변조할 수 있습니다. 공격자는 패킷 스니핑, 중간자(Man-in-the-Middle) 공격 등을 통해 쉽게 정보를 획득할 수 있습니다.
잠재적 영향
민감 정보 노출(민감 데이터 유출): 네트워크 중간에 위치한 공격자가 암호화되지 않은 데이터(예: 로그인 정보, 세션 토큰 등)를 쉽게 가로챌 수 있습니다.
데이터 변조(데이터 무결성 훼손): 전달되는 메시지가 위·변조될 수 있으며, 서비스 신뢰성에 심각한 영향을 줄 수 있습니다.
해결 방법
항상 wss://(WebSocket Secure) 프로토콜을 사용하여 웹소켓 연결을 암호화하세요.
SSL/TLS 인증서를 올바르게 설치 및 유지하세요.
평문(ws://) 연결은 테스트 환경(로컬환경)에서만 사용하고, 운영 환경에서는 반드시 암호화된 연결(wss://)만 허용하세요.
취약한 코드 및 안전한 코드 예시
취약한 코드
// 위험한 코드: 평문 WebSocket 사용
var ws = new WebSocket('ws://myapp.example.com/socket');
ws.onmessage = function(msg) {
console.log(msg.data);
}안전한 코드
설명:
취약한 코드: ws://로 시작하는 평문 웹소켓 연결은 데이터가 암호화되지 않아서 공격자에게 쉽게 도청되고 조작될 수 있습니다.
안전한 코드: wss://로 시작하는 보안 웹소켓 연결은 SSL/TLS 암호화를 적용하여 네트워크 상에서 데이터가 안전하게 보호됩니다.
참조
Last updated