消息以 example.com wants you to sign in with your Ethereum account: 开头,随后是地址、可选的声明,以及字段 URI、Version(1)、Chain ID、Nonce(至少 8 个字母数字字符)、Issued At,还可以包含 Expiration Time、Not Before、Request ID 和 Resources。钱包会把域名与发起请求的源比对,以提示钓鱼风险。
服务器必须检查所有内容,而不只是签名:域名和 URI 是否属于自己,nonce 是否由自己签发且此前没有出现过,时间是否有效,链 ID 是否符合预期。EOA 签名按 EIP-191 验证;合约账户则在声明的链上通过 ERC-1271 验证。SIWE 验证工具会执行这些检查。