知识卡片

提案预处理的四层防御式检查

专业/工作 · 534.b

内容

Endorser节点在真正模拟执行链码之前,先用preProcess()做四层递进检查,任何一层不通过就直接拒绝、不浪费后续资源:先验证消息格式与签名本身合法(防伪造);再检查是否为不允许外部直接调用的系统链码(cscc/lscc/qscc之外的系统链码只能被内部流程触发,防越权调用);接着按交易ID查账本确认这笔交易没被处理过(防重放);最后检查发起者是否满足通道写权限策略(防未授权访问)。四层检查按”伪造成本最低、最容易批量拒绝”到”需要查账本、成本最高”的顺序排列,让廉价检查先过滤掉大部分非法请求,避免每个请求都要付出一次账本查询的代价。

参考来源

《Hyperledger Fabric技术内幕:架构设计与实现原理》第4章《Endorser背书节点》