题目
你们的登录页部署在 app.example.com,但生成的登录消息里写的域名是 example.com。上线后部分用户的钱包直接拒绝了签名请求。
有工程师建议「把域名改成和钱包实际访问的地址一致」以临时解决,也有人担心这样会掩盖真正的问题。请分析这件事。
考察目标
- 是否理解登录消息中域名的绑定作用。
- 能否说明钱包为什么需要校验来源与域名。
- 能否区分「配置错误」与「攻击信号」。
考察登录消息中的域名绑定要求,以及来源校验失败时的正确处理方式。
你们的登录页部署在 app.example.com,但生成的登录消息里写的域名是 example.com。上线后部分用户的钱包直接拒绝了签名请求。
有工程师建议「把域名改成和钱包实际访问的地址一致」以临时解决,也有人担心这样会掩盖真正的问题。请分析这件事。
EIP-4361 消息中的 domain 为必填字段,服务端生成时需要让它与签名请求的来源一致;跨源 iframe 场景下应匹配发起请求的框架来源,而不是父页面来源。钱包按规范比对来源与消息中的 scheme、domain,这是防钓鱼机制,不是误报。
domain 是必填字段,取值为 RFC 3986 authority,可以包含端口;未给出 scheme 时按 HTTPS 处理(依据:EIP-4361 §Specification 的 Message Fields)。domain 与(若有的)scheme 需要与发出签名请求的来源一致;请求在跨源 iframe 内发起时,应匹配该框架的来源而不是父窗口来源(依据:EIP-4361 §Specification 的 Relying Party Implementer Steps 的 Specifying the Request Origin)。scheme、domain 防止钓鱼,来源比对使用浏览器窗口或钱包连接会话这类可信数据源(依据:EIP-4361 §Specification 的 Wallet Implementer Steps 的 Verifying the Request Origin)。domain,维护包含子域与端口的允许列表,不匹配的来源不签发消息(依据:工程经验,无规范依据)。domain 取值为含可选端口的 RFC 3986 authority;依据:EIP-4361 §Specification 的 Message Fields)。发现这道题有问题? 反馈此题