我正在使用 websocket 构建一个通过 JSON 序列化数据的 API。该应用程序本身是一个聊天应用程序。我想出了以下结构来发送我的数据:
{date: '2020-05-31', time: '14:28:05', text: "Hey!", to: '<id:int>', from: '<id:int>'}
用户基本上通过浏览器发送消息,并在 websocket 服务器中接收。from: 'id'将来自发送数据的用户,而to: 'id'将来自正在发送数据的用户。
看到这里,我有一种非常不好的感觉。我的想法; 理论上,使用该应用程序的用户将进行身份验证,这就是他获得身份的地方。然后接收者将有另一个 id,这与经过身份验证的 id 不同(显然)。然后服务器会查找该 ID 并发送消息,但我不确定这是否安全。
我认为必须正确处理某些方面以保护应用程序免受任何攻击者的侵害:
- 如果攻击者决定篡改“ from:id”以便它可以从任何用户向任何人发送任意消息怎么办?
- 如果攻击者利用“to:id”字段构建了一个向数百万条消息发送垃圾邮件的脚本怎么办?
是否可能还有另一个我不关心的安全问题?