# Rhinestone permissions真是白名单吗？核fallback、旧permission ID与签名权限

整理：链小知（AI 辅助）
资料核对日期：2026-10-14
引用地址：https://lianxiaozhi.com/tools/guides/rhinestone-session-fallback-salt-signing-authority-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

按自定义EVM Session材料检查授权边界，避免修改新配置却仍留下旧宽权限。

## 使用工具
- [Rhinestone](https://lianxiaozhi.com/tools/rhinestone) · [官方入口](https://www.rhinestone.dev/)

## 前置条件
- 准备自己已有的脱敏配置、日志或状态回执，保留产品版本、对象、字段和日期；缺值不补成成功或零。

## 1. 固定SDK表面与启用状态

本篇按@rhinestone/sdk 3.0.0自定义EVM Session说明，记录账户、chain、session signer、permission ID和validator启用材料；createSession定义不等已上链启用，可按既有isSessionEnabled结果核。managed Solana的Swig allButManageAuthority不是本套token预算/allowlist/expiry，不能移植相同保障。

核对结果：SDK、EVM链、signer、permission ID与启用结果分别有证据或未知。
依据：[Rhinestone：SDK自定义EVM Session配置](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/create-a-session.md)
依据：[Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)
依据：[Rhinestone：Session启用状态及单项/整体撤销](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/use-a-session.md)

## 2. permissions与intent fallback分开

permissions按ABI绑定地址/函数，参数限制按ABI名称配置。仅列permissions并非严格allowlist：默认仍有wildcard intent-execution fallback，未匹配调用可经Orchestrator的intent target allowlist作为intent执行。检查restrictToActions=true才知道是否移除这一路；函数参数未设限制时，也不能因函数在列表里就认为金额/收件人固定。

核对结果：显式调用权限、参数限制与fallback各有设置依据。
依据：[Rhinestone：SDK自定义EVM Session配置](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/create-a-session.md)
依据：[Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)
依据：[Rhinestone：ABI参数规则、静态类型和value上限](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/policies/call.md)

## 3. 限制调用还要核非空与碰撞规则

restricted Session至少含一个permission或action；actions必须同时有target、selector，不能指fallback sentinel，也不能与permissions在同一target/selector碰撞，否则共用同一on-chain action ID。restrictToActions不可与crossChainPermits或claimPolicies并用，因为其支出/时间守卫依赖fallback。缺raw actions或claim配置时，限制有效性仍未知。

核对结果：非空、target/selector、sentinel、同键碰撞和互斥配置已逐项核。
依据：[Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)
依据：[Rhinestone：SDK自定义EVM Session配置](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/create-a-session.md)

## 4. strict salt不替撤销旧宽授权

saltMode默认none使用zero salt，同signer即使actions变更也可复用permission ID，再enable会增加policy而非替换。strict使不同restricted定义有不同ID，但signer仍控制之前每个ID；收窄时须核旧宽Session已撤。disableSession仅撤单Session，disable卸整个validator及其Sessions；prepared或签过撤销意图不等实际撤销成功，缺执行结果保留旧授权未知。

核对结果：新定义、旧ID与撤销范围/结果分别记录；未把换salt当链上撤权。
依据：[Rhinestone：SDK自定义EVM Session配置](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/create-a-session.md)
依据：[Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)
依据：[Rhinestone：Session启用状态及单项/整体撤销](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/use-a-session.md)

## 5. ERC1271签名权限单独验收

普通Session省略signing默认为unrestricted且无有效期；restricted/swap-scoped默认disabled，可显式再启用。scoped按EIP712 domain与canonical primary-type schema匹配，不限制token/amount/spender/deadline等消息值。unrestricted/scoped时间窗为Date配置，不能套另一客户端的Unix参数。当前可配置/enable scoped，但直接scoped signTypedData仍暂不可用直到安全ERC7739发射恢复；失败快返不等策略已绕过或签出成功。

核对结果：执行范围、签名模式、domain/schema、值限制与当前不可用分支均分开。
依据：[Rhinestone：签名模式与当前scoped限制](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/session-signing.md)
依据：[Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)

## 常见错误
- 同signer可能仍持多个旧permission ID；单个新Session变窄不等总体权限变窄。
- 具体params只能限制已编码字段，不从ABI显示名称或产品宣传推断资金预算和x402支付限制。

## 完成检查
- 形成输入、官方判定方法、已知结果和未知分支的对照；方法已核，实际运行与本人权限未验证。

## 相关知识

## 官方依据
- [Rhinestone：SDK自定义EVM Session配置](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/create-a-session.md)
- [Rhinestone：restrictToActions、salt与intent fallback](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/restrict-a-session.md)
- [Rhinestone：Session启用状态及单项/整体撤销](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/use-a-session.md)
- [Rhinestone：签名模式与当前scoped限制](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/session-signing.md)
- [Rhinestone：ABI参数规则、静态类型和value上限](https://docs.rhinestone.dev/wallets/session-keys/custom-setup/policies/call.md)
