题目
你们做过一次演练:在页面里注入一段脚本,把用户点击「质押 10 个代币」时提交的金额改成 100 个,结果钱包弹窗显示的就是 100,用户没有察觉。
请分析这条链路上有哪些环节可能被改动,以及前端与钱包各自能提供什么保护。
考察目标
- 能否列出参数从页面到签名的完整链路。
- 是否理解规范对 Provider 对象的安全假设。
- 能否给出降低篡改影响的工程手段。
考察请求链路上的信任环节,以及前端如何降低参数被替换的可能性。
你们做过一次演练:在页面里注入一段脚本,把用户点击「质押 10 个代币」时提交的金额改成 100 个,结果钱包弹窗显示的就是 100,用户没有察觉。
请分析这条链路上有哪些环节可能被改动,以及前端与钱包各自能提供什么保护。
链路包括页面构造参数、第三方依赖处理、Provider 转发、钱包展示与签名。EIP-1193 把 Provider 描述为暴露在不受信环境中、受第三方控制的对象,其属性可以被读取或覆盖,因此页面内注入的脚本可以替换参数,也可以替换整个 Provider。
eth_sendTransaction 的 from、to、value、data、gas 等参数由请求方构造并通过 JSON-RPC 请求对象提交(依据:EIP-1474 §Methods 的 eth_sendTransaction)。eth_call 用于在不提交交易的前提下立即执行一次消息调用,可用于提交前的模拟(依据:EIP-1474 §Methods 的 eth_call)。发现这道题有问题? 反馈此题