1
질문 : 내 웹 소켓 서버에 연결하려는 클라이언트가 내가 제공 한 웹 페이지에서이 작업을 수행하고 있는지, 다른 페이지 나 스크립트에서 가져온 것이 아닙니까?내 웹 페이지에서 websocket이 열렸는지 확인하는 방법
질문 : 내 웹 소켓 서버에 연결하려는 클라이언트가 내가 제공 한 웹 페이지에서이 작업을 수행하고 있는지, 다른 페이지 나 스크립트에서 가져온 것이 아닙니까?내 웹 페이지에서 websocket이 열렸는지 확인하는 방법
악의적 인 사용자/프로그램이이 웹 소켓에 연결할 수 있으며 이에 대해 수행 할 수있는 작업은 없습니다 (기사의 기간 끝). 그러나 웹 소켓에 대한 동일한 출처 정책은 XHR과 매우 유사해야합니다. 명시 적으로 허용하지 않는 한 다른 도메인의 JavaScript는 도메인의 WebSocket에 액세스 할 수 없습니다. 즉, 누군가 콘텐츠를 재배포 할 경우 크로스 도메인 프록시를 사용해야합니다.
"다른 도메인의 JavaScript가 도메인의 WebSocket에 액세스 할 수 없습니다." - 이것은 사실 가능합니다. 'Sec-WebSocket-Origin' 헤더 값을 확인하기 만하면됩니다. – pimvdb
@pimvdb 정확하게 두 점 모두에 대한 규칙은 거의 동일합니다. XHR에서는'Access-Control-Allow-Origin : *'헤더를 사용합니다. – rook
명확히 말하면, 정상적으로 작동하고 정상적으로 작동하는 브라우저에서 실행되는 Javascript는 페이지가로드 된 원본 사이트의 값을 보유하는 Sec-WebSocket-Origin의 값에 영향을 줄 수 없습니다 (서버가 특정 시작 지점 만 허용하도록 허용). 그러나 Javascript가 Node.js에서 WebSocket 클라이언트로 실행되고 있다면 원점 값을 원하는 값으로 설정할 수 있습니다. CORS 보안은 서버가 아닌 브라우저 사용자의 안전을위한 것입니다. 서버를 보호하려면 다른 메커니즘이 필요합니다. – kanaka