面试题答案
一键面试中间人可能采取的干扰手段
- 数据篡改:中间人拦截WebSocket消息,修改消息内容后再转发给接收方。例如修改交易金额、指令等关键信息。
- 消息窃听:中间人监听WebSocket通信内容,获取敏感信息,如用户账号密码、业务数据等。
- 会话劫持:中间人窃取WebSocket会话的认证信息(如令牌等),冒用合法用户身份与服务器进行通信,获取授权访问权限。
- 重放攻击:中间人记录合法的WebSocket消息,然后在合适时机重新发送,导致重复操作。比如重复支付等。
- 伪装身份:中间人向客户端伪装成合法服务器,向服务器伪装成合法客户端,建立虚假连接,欺骗双方进行通信。
防范中间人攻击的技术措施
- 使用TLS加密:
- 在WebSocket连接建立时使用HTTPS协议(即wss:// 而非ws://),通过TLS加密整个通信过程,使中间人无法窃听和篡改数据。TLS加密对传输数据进行加密处理,只有拥有正确密钥的接收方才可解密。
- 强身份认证:
- 客户端认证:服务器对客户端进行严格身份验证,如使用用户名密码、数字证书等方式。确保连接的客户端是合法的。
- 服务器认证:客户端验证服务器的身份,防止中间人伪装服务器。通过验证服务器的数字证书,确认其真实性。
- 消息完整性校验:
- 在消息中添加消息认证码(MAC),例如HMAC(Hash - based Message Authentication Code)。接收方使用相同密钥和算法计算MAC并与接收到的MAC对比,若不一致则说明消息被篡改。
- 会话管理:
- 使用随机且唯一的会话令牌,并设置较短的有效期。令牌定期更新,降低会话被劫持风险。
- 对会话进行监控,如检测异常的会话行为,如频繁重连、大量异常请求等,及时发现会话劫持等攻击。
- 防止重放攻击:
- 在消息中添加时间戳或递增的序列号。接收方检查时间戳是否在合理范围内,或序列号是否连续递增,拒绝重复的消息。