mcpField
A
api-platform-security

api-platform-security

github.com/dev-toolings安全22780 次安装3 周前更新
代码仓库

关于 api-platform-security

面向 Symfony 的技能,指导围绕 API Platform 的操作、对象、集合和字段设计授权。它提供实施与测试访问控制的默认流程及安全注意事项。

主要功能

  1. 01按操作配置安全表达式
  2. 02用 Voter 处理复杂授权
  3. 03基于输入执行安全检查
  4. 04按用户限定集合和字段
  5. 05授权测试指导

适用场景

  1. 01限制 API 操作的访问权限
  2. 02将集合限制为用户自己的记录
  3. 03按角色或所有权隐藏字段

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill api-platform-security

安装后在 Claude Code 中输入/api-platform-security确认已加载。

附带文件reference.md

详细介绍

Api Platform Security(Symfony)

适用场景

  • 限制哪些人可以调用 API Platform 资源的各项操作。
  • 授权取决于对象(所有者)或提交的数据。
  • 用户只能看到集合中的部分内容。
  • 根据角色或所有权隐藏字段。

默认工作流

  1. 使用 is_granted()、object 和 user 为每项操作设置 security,并添加 securityMessage。
  2. 将复杂规则移至投票器:is_granted('POST_EDIT', object)。
  3. 规则取决于输入时,使用 securityPostDenormalize;若要在 Validator 之后运行,则使用 securityPostValidation。
  4. 使用 QueryCollectionExtensionInterface(以及 QueryItemExtensionInterface)或状态提供程序限定行的范围。
  5. 使用序列化器分组和装饰后的上下文构建器隐藏字段,并使用 access_control 保护防火墙。
  6. 为每项受保护操作测试授权和拒绝两种情况。

防护措施

  • 切勿通过集合上的 security 表达式筛选行:它会控制整个集合的访问,而不是限定集合范围。
  • 检查顺序:security、反规范化、securityPostDenormalize、验证、securityPostValidation。
  • previous_object 仅在 securityPostDenormalize 中存在,request 仅在资源级别存在。
  • 默认拒绝访问,并使用 #[Ignore] 标记 password 等机密信息。
  • getAccessDecision() 和 Twig 的 access_decision() 助手需要 Symfony 8.1 或更高版本:使用前请确认。

渐进式披露

  • 使用此文件了解执行策略和风险控制。
  • 需要深入了解实现细节时,打开参考资料。

输出约定

  • 每项操作的安全表达式和消息,以及涉及的投票器。
  • 如何按用户限定集合和字段的范围。
  • 覆盖允许访问、禁止访问和匿名访问的测试。

参考资料

  • reference.md

评论

支持 Markdown