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