区块链 · 数字资产知识 · 行业资讯
文章库关于本站

安全防护

区块链DApp钱包连接请求怎么看|读取账户与发起操作不是同一权限

摘要

结合EIP-2255权限接口与EIP-1193错误码,说明wallet_requestPermissions与eth_accounts暴露范围不同;拒绝单项请求后会话可继续,不等于已授权转账。

区块链dapp钱包的科技主题配图

连接提示里先找方法名与调用方

区块链DApp钱包弹窗里,优先核对请求的方法名和调用方标识。EIP-2255把权限对象写成invoker(如https站点)、parentCapability(被允许的方法,例如eth_accounts)以及caveats限制数组。读连接请求时,应能指出“站点要什么方法”,而不是只看到“连接钱包”四字或品牌图标。

EIP-1193规定Provider以request封装RPC,并用事件通知链与账户变化。它强调Provider暴露在不可信页面中,钱包必须隔离私钥并校验来自Provider的数据。因此,页面能调用request,不等于已经获得无限签名权,也不等于节点已替用户广播交易。若弹窗只显示品牌文案而没有方法名,应改用钱包活动日志或开发者工具核对实际RPC,而不是凭记忆判断权限范围。

读取账户与发起操作要分开批

EIP-2255动机部分写到:许多应用一上来连续要求暴露地址、切网、签名挑战、授权额度、发交易;权限接口希望把可读的人类权限集中在登录阶段,并允许逐项拒绝或衰减。eth_accounts一类能力主要关于账户暴露;发送交易或签名仍通常对应其他方法,需另获授权。

EIP-1193安全考虑建议默认不暴露账户,改为通过eth_requestAccounts或wallet_requestPermissions显式请求。若用户只批准账户读取,随后的eth_sendTransaction等受限方法在批准前应失败。把“已连接”理解成“可任意转账”会跨越规范边界,也和代币额度授权文章要回答的问题不同。对已经批准的账户读取权限,仍要在accountsChanged事件后重新确认当前地址列表,防止用户在钱包内切换账户后页面沿用旧假设。

区块链代币授权的科技主题配图

拒绝之后看错误码,而不是刷新重试掩盖

EIP-2255写明:若wallet_requestPermissions被拒绝,应抛出与EIP-1193一致的4001(User Rejected Request)。EIP-1193还列出4100未授权、4200不支持方法、4900/4901断开等。排障时应记录code与方法名,而不是反复点击直到偶然通过。

ethereum.org的JSON-RPC说明指出,应用经节点的统一方法读写链上数据;钱包Provider则在此之上增加授权与账户中介。节点eth_accounts返回客户端持有地址,与页面经钱包授权后看到的账户列表不是自动同一安全边界。本文只解释权限清单,不计算具体代币allowance。若错误码是4100,优先检查是否从未成功完成过wallet_requestPermissions,而不是怀疑节点同步故障。

使用边界

规范允许caveat表达更细限制(例如requiredMethods),但各钱包实现完整度不同;未实现的字段不能当成已生效策略。SSRF提醒还要求钱包谨慎拉取站点图标URL,避免被诱导访问内网服务。

本文未连接真实DApp、未提交链上交易。归档连接决策时应保存方法名、invoker、批准/拒绝项与错误码,而不是截一张“已连接”成功图了事。

← 返回全部文章

延伸阅读 · 相关栏目

安全防护钱包与账户风险识别信息核验