Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时需要检查原始属性?_Javascript_Security_Javascript Security - Fatal编程技术网

Javascript 何时需要检查原始属性?

Javascript 何时需要检查原始属性?,javascript,security,javascript-security,Javascript,Security,Javascript Security,何时需要检查实现接口的事件的origin属性以避免安全漏洞 origin属性必须返回它初始化到的值。在服务器发送事件和跨文档消息传递中,它表示发送消息的文档的来源(通常是文档的方案、主机名和端口,但不是其路径或片段) 此属性由服务器发送的事件、Web套接字、跨文档消息传递、频道消息传递和广播频道公开 我应该知道什么?我需要注意什么?我应该记住什么 检查origin属性有什么意义 var websocket = new WebSocket('ws://echo.websocket.org/');

何时需要检查实现接口的事件的
origin
属性以避免安全漏洞

origin属性必须返回它初始化到的值。在服务器发送事件和跨文档消息传递中,它表示发送消息的文档的来源(通常是文档的方案、主机名和端口,但不是其路径或片段)

此属性由服务器发送的事件、Web套接字、跨文档消息传递、频道消息传递和广播频道公开

我应该知道什么?我需要注意什么?我应该记住什么

检查
origin
属性有什么意义

var websocket = new WebSocket('ws://echo.websocket.org/');
websocket.onmessage = function(e) {
  // Can I trust this event?
  // Do I need to check e.origin?
};
我甚至需要检查
origin
,还是只检查
已信任的属性

var websocket = new WebSocket('ws://echo.websocket.org/');
websocket.onmessage = function(e) {
  // Can I trust this event?
  // Do I need to check e.origin?
};
何时需要检查原始属性

var websocket = new WebSocket('ws://echo.websocket.org/');
websocket.onmessage = function(e) {
  // Can I trust this event?
  // Do I need to check e.origin?
};
最佳实践:始终

我应该知道什么?我需要注意什么?我应该记住什么

无论何时,当你与另一方沟通时,该方可能怀有敌意。根据通信内容的不同,这可能是一个安全问题,特别是如果您a)共享数据b)根据请求采取行动,这通常是安全问题

关键是,任何一方都可以尝试与您发起通信,即使您发起了通信,在跨文档消息传递(框架、选项卡等)的情况下,您的对方可能会更改(通过导航、转发)和频道。您应该明确检查您正在与谁通信,以及您是否希望这样做

引用:

如果您不希望从其他站点接收消息,请不要为消息事件添加任何事件侦听器。这是一种避免安全问题的万无一失的方法。
如果您确实希望从其他站点接收邮件,请始终使用“来源”和“可能的来源”属性验证发件人的身份。任何窗口(例如,包括)都可以向任何其他窗口发送消息,您无法保证未知发件人不会发送恶意消息。但是,在验证了身份之后,您仍然应该始终验证所接收消息的语法。否则,您信任的站点中的安全漏洞(仅发送受信任的消息)可能会在您的站点中打开跨站点脚本漏洞

我甚至需要检查原产地,或者只是检查受信任的财产

var websocket = new WebSocket('ws://echo.websocket.org/');
websocket.onmessage = function(e) {
  // Can I trust this event?
  // Do I need to check e.origin?
};

不,它会做完全不同的事情。此外,浏览器无法知道您信任哪些域和不信任哪些域,尤其是当您希望执行跨源消息传递时。

如果我在我的websocket实例上为“message”事件注册事件侦听器,我的事件处理程序是否可以接收非来自自身的事件?我认为在web套接字和服务器发送的事件中,如果您信任端点,则可以忽略检查。不确定
.origin
在重定向时如何工作。