基于源的安全模型是啥意思?
Posted
技术标签:
【中文标题】基于源的安全模型是啥意思?【英文标题】:What does origin-based security model mean?基于源的安全模型是什么意思? 【发布时间】:2013-10-02 23:55:29 【问题描述】:我正在研究 websocket RFC 6455,其中 web-socket 的安全模型被声明为 origin-based security model 。还提到了 Web 浏览器使用此安全模型。那么这个基于来源的安全模型是关于什么的?
【问题讨论】:
【参考方案1】:CORS 不适用于 WebSocket。一个页面 JS 可以连接到任何 WebSocket 服务器。只是浏览器 WebSocket 客户端将发送一个origin
标头,您可能会或可能不会在服务器中使用它来拒绝客户端。但是,非浏览器客户端可以伪造它,因此它的用途有限。
【讨论】:
【参考方案2】:本质上,数据/脚本根据加载的位置被归类为可信或不可信,如果您了解同源策略或跨源资源共享 (CORS),那么您就知道浏览器对加载的 javascript 设置了一些限制不同的域。
【讨论】:
不,CORS 不适用于 WebSocket。【参考方案3】:会发生什么:
客户端连接到服务器,建立 TCP 连接,HTTP 分层。 在 HTTPS 的情况下,还有一个关于要使用的加密协议、密钥交换和可能的证书交换的协议。如果发生证书交换: 客户端可以通过使用服务器的公钥验证服务器的证书来确定服务器是它所伪装的(通常这样做是为了确保没有中间人攻击或 DNS正在发生欺骗等) 服务器可以通过使用客户端的公钥验证客户端的证书来确定客户端的真实身份(仅在用例要求客户端身份很重要的情况下进行) 连接已建立!从这里开始,任何通过 TCP 连接的东西都被认为是健康的。 “越过连接”意味着“同源”:它来自同一个客户端(或来自同一个服务器)。很可能是客户端(甚至服务器)上存在恶意黑客攻击,它破坏了 TCP 或 HTTP 级别的现有连接,并注入了自己的数据包、数据、请求或 XML 块。 太糟糕了!在所描述的方法中无法排除这种情况。需要对协议进行额外检查,例如每个单独的请求都有单独的签名,由 $company代表 安装的相互信任的硬件模块或类似的复杂模块签名。
【讨论】:
以上是关于基于源的安全模型是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章