首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在web套接字上进行身份验证?

如何在web套接字上进行身份验证?
EN

Stack Overflow用户
提问于 2021-05-11 04:44:46
回答 1查看 301关注 0票数 0

为什么我要使用websockets?

我正在通过WebSocket路由我所有的HTTPS请求,因为我的应用程序有一个聊天功能,我需要在应用程序运行时保持WebSocket打开,那么为什么不直接通过它路由所有请求呢?

我的问题,

事实证明,这样做更容易。是否应该使用相同的访问令牌&刷新令牌来验证客户端身份验证。或者应该在连接打开时验证它,然后只要它打开就可以信任它。以下是我的问题:

wss( WebSocket secure)足以阻止处于attacks?

  • Should中间的人,我为每个WebSocket连接生成一种票证类型的机制,该机制持续2-10分钟,然后断开连接并要求客户端重新连接?

  • ,或者我应该为客户端的每一个请求提供一个访问令牌。

  • 如何确保当服务器发送它要发送的数据时,我只是结束了对所有有效负载的加密,以避免出现许多问题?
EN

回答 1

Stack Overflow用户

发布于 2021-05-11 04:51:12

,或者我应该在连接打开时验证它,然后只要它打开就可以信任它。

只要连接是通过受信任的通道(例如ssl/tls ),就可以这样做。

  1. (网络套接字安全)足以阻止中间人的攻击??

是。Wss只是ssl/tls上的ws。

  1. 是否应该为每个WebSocket连接生成一种票证机制,该机制持续2-10分钟,然后断开连接并要求客户端重新连接?

我不知道你为什么要这么做。相反,与聊天一样的应用程序,你希望保持连接打开尽可能长。虽然我建议在客户端实现ping调用,在服务器端实现超时。使用这种方法,您可以要求客户端每隔30分钟执行一次操作。

  1. ,或者我应该有一个访问令牌来处理来自客户端的每一个请求.

不必了。使用ssl/tls,您可以对整个连接进行一次身份验证,只需记住在经过身份验证的服务器端。令牌与传统的HTTP一起使用,因为水平扩展这样的应用程序更容易,例如,连接到哪个服务器并不重要,您甚至可以在调用之间切换服务器,这不会影响auth。但是对于类似聊天的应用程序(或任何需要双向通信的应用程序),连接必须是持久的,因此令牌会带来不必要的开销。

  1. 如何确保当服务器发送数据时,它将发送到正确的客户端.

我不知道你这么说是什么意思。这正是tcp + ssl/tls所保证的。安全tcp上的任何其他协议都是一样的。或者你的意思是在应用程序级别?那么,一旦经过身份验证,您就必须匹配具有相应连接的用户。服务器必须跟踪这个。

  1. 是否应该对所有有效负载进行端到端加密以避免许多问题?

什么问题?E2E加密的用途非常不同:它保证您,即.a。服务器无法读取消息。它保护高度的隐私,甚至连服务器也不能读取消息,只有对等服务器。因此,这是一个商业决策,而不是技术或安全决策。你想完全控制谈话吗?那么很明显,你不能和E2E一起去。另一方面,如果您想给您的用户提供最高级别的隐私,那么这是一种很好(如果不是强制性的)方法。请注意,与非E2E相比,功能齐全的E2E本质上更难实现。

我需要在应用程序运行时保持WebSocket打开,那么为什么不直接路由所有请求通过它呢?

这是一个有趣的方法。我自己也在考虑这么做(而且很可能会尝试一下)。其优点是整个通信通过单一的协议,这更容易调试。另一个优点是,有了适当的协议,您可以获得更高的性能。缺点是传统的HTTP是很好的理解,有很多的工具和子协议(例如REST)覆盖它。安全性、二进制流(例如文件服务)等通常是不受限制地管理的。所以感觉有点像重新发明轮子。不管怎样,我祝你好运,希望你能回到我们身边,告诉我们事情进展如何。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67487034

复制
相关文章
套接字
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88673990
zy010101
2019/05/25
1.3K0
Python Web学习笔记之socket套接字
套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。和大多数语言一样,Python 支持面向连接和无连接,实现接口功能与步骤也大致相同。 面向连接即需要先连接然后通讯, 面向连接主要协议就是传输控制协议(tcp),要创建tcp套接字时需要指定套接字类型为 SOCK_STRAM,表达了他作为流套接字的特点。 无连接,顾名思义无
Jetpropelledsnake21
2018/05/03
1K0
套接字选项
选项影响套接字操作,如 封包路由,OOB数据传输,获取和设置套接字选项分别是 getsockopt  setsockopt 用法如下: int getsockopt(SOCKET s,int level,int optname,char* optval,int* optlen); int setsockopt(SOCKET s,int level,int optname,char* optval,int* optlen); 每个协议层套接字的选项有不同的级别: 应用层:SOL_SOCKET 传输层:IPPR
用户1154259
2018/01/17
1.2K0
Socket(套接字)
TCP/IP只是一个协议栈,Socket的出现只是可以更方便的使用TCP/IP协议栈而已,其对TCP/IP进行了抽象,形成了几个最基本的函数接口。比如create,listen,accept,connect,read和write等等。
老马的编程之旅
2022/06/22
1.3K0
Python套接字
Python只支持AF_UNIX(基于文件)、AF_NETLINK(使用标准的BSD套接字接口进行用户级别和内核级别代码之间的IPC)、AF_TIPC(透明的进程间通信)、AF_INET(基于网络)家族。
用户4845306
2019/03/14
1.6K0
Java套接字
  本文补充一下Java关于套接字方面的内容,因为其应用相对比较简单,所以下面介绍两个程序实例。
云海谷天
2022/08/09
7680
Java套接字
利用套接字进行数据传输
1.int socket(int domain, int type, int protocol) domain:指定socket所属的域,常用的是AF_UNIX或AF_INET AF_UNIX表示以文件方式创建socket,AF_INET表示以端口方式创建socket type:指定socket的类型,可以是SOCK_STREAM或SOCK_DGRAM SOCK_STREAM表示TCP SOCK_DGRAM表示UNP protocol:指定socket的协议类型,我们一般指定为0表示 socket()函数返回新创建的socket,出错则返回-1
提莫队长
2019/02/21
5240
16(套接字)
套接字描述符在Unix系统中是用文件描述符实现的。事实上,许多处理文件描述符函数(read和write)都可以处理文件描述符 要创建一个套接字,可以调用socket函数
提莫队长
2019/02/21
9820
套接字Socket编程
Socket,原意插座、插口。写软件程序时,可以想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前,双方都要建立一个Socket。
JavaEdge
2021/12/07
1.3K0
套接字Socket编程
Socket 套接字协议
A network socket is an internal endpoint for sending or receiving data within a node on a computer network. Concretely, it is a representation of this endpoint in networking software (protocol stack), such as an entry in a table (listing communication protocol, destination, status, etc.), and is a form of system resource.
vanguard
2020/03/18
1.5K0
IPC|网络套接字
为了访问由UDP提供的服务,你需要像以前一样使用套接字和close系统调用,但你需要用两个
heidsoft
2022/04/18
1.1K0
套接字随笔1
accept函数接受一个客户端请求后会返回一个新的SOCKFD值,当有不同的客户端同时有不同请求时,会返回不同的SOCKFD的值。这个不同的值和建立SOCKET 时生成的SOCKFD还是不同的。服务器与客户端之间的通信就是在这些不同的SOCKFD上进行的。
随心助手
2022/11/30
5500
linux 网络套接字
在内核分析网络分组时,底层协议的数据将传输到跟高的层。而发送数据的时候顺序是相反的。每一层都是通过加(首部+净荷)传向跟底层,直至最终发送。
233333
2019/05/25
2.8K0
Socket - 套接字编程
目录 Socket - 套接字编程 Socket 通信流程图 Socket模块 socket()方法 部分参数 bind()方法 listen()方法 accept()方法 accept()函数返回值:sock、addr connect() 方法 close()方法 服务端客户端对比 简单案例 简易通信循环 优化通信循环 黏包问题 Struct 模块 规定报头 解决黏包问题 上传文件案例 UDP通信 Socket - 套接字编程 只要涉及到远程数据交互必须要操作OSI七层模型,那么每层都需要相应的程序
HammerZe
2022/03/25
1K0
Socket - 套接字编程
套接字Socket编程
Socket,原意插座、插口。写软件程序时,可以想象成一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以通信前,双方都要建立一个Socket。
JavaEdge
2021/10/18
1.4K0
Python与套接字
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客 户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时 客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应 数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束
星陨1357
2023/03/14
2.4K0
Python与套接字
如何在Ubuntu 18.04上配置多重身份验证
双因素身份验证 (2FA)是一种身份验证方法,需要输入多条信息才能成功登录帐户或设备。 除了输入用户名和密码组合之外,2FA还要求用户输入一条额外的信息,例如一次性密码 (OTP),如六位数的验证码。
用户2323866
2021/06/18
2.8K0
如何在CentOS上使用双重身份验证
在本教程中,您将学习如何在CentOS 7上使用一次性密码进行SSH上的双重身份验证。
朝朝
2018/08/20
2K0
如何在CentOS上使用双重身份验证
accept()返回的套接字绑定哪个端口 新旧套接字的联系
摘要:对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。它从内核中取出已经建立的客户连接,然后把这个已经建立的连接返回给用户程序,此时用户程序就可以与自己的客户进行点到点的通信了。
bear_fish
2018/09/20
3.9K1
python UDP套接字通信
UDPserver.py 1 import socket 2 #导入套接字模块 3 4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_INET:IPV4 6 # - socket.STREAM:TCP 7 # - socket.DGRAM:UDP 8 9 s.bind(('',25555)) 10 #绑定套接字有效地址和端口 11 #''空位任何地址 本地的127.0.0.1 和局域网还有自己真实
py3study
2020/01/19
1.5K0

相似问题

如何在web套接字上设置子通道

10

HTTP web套接字与ActiveMQ web套接字

10

通过web套接字暴露套接字

13

使用jwt对web套接字连接进行身份验证是否安全?

10

PHP web套接字无法绑定套接字

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文