首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么没有WebSockets的同源策略?为什么我可以连接到ws:// localhost?

为什么没有WebSockets的同源策略?为什么我可以连接到ws:// localhost?
EN

Stack Overflow用户
提问于 2018-03-26 00:47:54
回答 2查看 0关注 0票数 0

我想使用WebSocket为我的应用程序(Daemon<->WebGui和Daemon<->FatClient等)进行进程间通信。在测试期间,我尝试通过websocket.org上的JavaScriptWebSocket客户端连接到本地运行的web套接字服务器(ws://localhost:1234)

我现在的问题是:

为什么这是可能的?浏览器中是否没有实现跨源策略?

我之所以这样问是因为如果websocket.org是坏的,它可以尝试与我的本地WS服务器进行通信,并将从localhost接收到的每一条消息重定向到任何其他服务器:

代码语言:txt
复制
Local WebSocket Server            Browser            Evil Web Server
at ws://localhost:1234                               at http://evil.tld
        |                            |                       |
        |                            |------[GET /]--------->|
        |                            |<-----[HTML+EvilJS]----|
        |<------[connect ws://..]----|                       |
        |<----[some communication]-->|                       |
        |                            |----[evil forward]---->|
        |                            |                       |

我还没有测试整个用例,但是websocket.org提供的JS中的ws://localhost的连接肯定有效。

EN

Stack Overflow用户

发布于 2018-03-26 08:59:09

。浏览器发送可由应用程序检查的“原始”标题。

在Java [1]中:

代码语言:javascript
复制
@override
public void onOpen(WebSocket clientSocket,ClientHandshake handshake){
    string clientOrigin = handshake.getFieldValue(“origin”);

    if(clientOrigin == null ||!clientOrigin.equals(WEBSOCKET_ALLOWED_ORIGIN_HEADER)){
        logger.log(Level.WARNING,“Client did not sent correct origin:”+ clientOrigin);        

        clientSocket.close();
        return;
    }

    // ...
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档