Agent skill · security · affaan-m
laravel-security
Laravel 安全最佳实践,涵盖认证/授权、验证、CSRF、批量赋值、文件上传、密钥管理、速率限制和安全部署。
Why this skill is useful
Provides specific security practices and code snippets for Laravel applications that the AI wouldn't reliably generate on its own.
What it needs
About 2k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
Laravel 安全最佳实践 针对 Laravel 应用程序的全面安全指导,以防范常见漏洞。 何时启用 添加身份验证或授权时 处理用户输入和文件上传时 构建新的 API 端点时 管理密钥和环境设置时 强化生产环境部署时 工作原理 中间件提供基础保护(通过 VerifyCsrfToken 实现 CSRF,通过 SecurityHeaders 实现安全标头)。 守卫和策略强制执行访问控制(auth:sanctum、$this->authorize、策略中间件)。 表单请求在输入到达服务之前进行验证和整形(UploadInvoiceRequest)。 速率限制在身份验证控制之外增加滥用保护(RateLimiter::for('login'))。 数据安全来自加密转换、批量赋值保护以及签名路由(URL::temporarySignedRoute + signed 中间件)。 核心安全设置 生产环境中设置 APPDEBUG=false APPKEY 必须设置,并在泄露时轮换 设置 SESSIONSECURECOOKIE=true 和 SESSIONSAMESITE=lax(对于敏感应用,使用 strict) 配置受信任的代理以正确检测 HTTPS 会话和 Cookie 强化 设置 SESSIONHTTPONLY=true 以防止 JavaScript 访问 对高风险流程使用 SESSIONSAMESITE=strict 在登录和权限变更时重新生成会话 身份验证与令牌 使用 Laravel Sanctum 或 Passport 进行 API 身份验证 对于敏感数据,优先使用带有刷新流程的短期令牌 在注销和账户泄露时撤销令牌 路由保护示例: 密码安全 使用 Hash::make() 哈希密码,切勿存储明文 使用 Laravel 的密码代理进行重置流程 授权:策略与门面 使用策略进行模型级授权 在控制器和服务中强制执行授权 使用策略中间件进行路由级强制执行: 验证与数据清理 始终使用表单请求验证输入 使用严格的验证规则和类型检查 切勿信任请求负载中的派生字段 批量赋值保护 使用 $fillable 或 $guarded,避免使用 Model::unguard() 优先使用 DTO 或显式的属性映射 SQL 注入防范 使用 Eloquent 或查询构建器的参数绑定 除非绝对必要,避免使用原生 SQL XSS 防范 Blade 默认转义输出({{ }}) 仅对可信的、已清理的 HTML 使用 {!! !!} 使用专用库清理富文本 CSRF 保护 保持 VerifyCsrfToken 中间件启用 在表单中包含 @csrf,并为 SPA 请求发送 XSRF 令牌 对于使用 Sanctum 的 SPA 身份验证,确保配置了有状态请求: 文件上传安全 验证文件大小、MIME 类型和扩展名 尽可能将上传文件存储在公开路径之外 如果需要,扫描文件以查找恶意软件 速率限制 在身份验证和写入端点应用 throttle 中间件 对登录、密码重置和 OTP 使用更严格的限制 密钥与凭据 切勿将密钥提交到源代码管理 使用环境变量和密钥管理器 密钥暴露后及时轮换,并使会话失效 加密属性 对静态的敏感列使用加密转换。 安全标头 在适当的地方添加 CSP、HSTS 和框架保护 使用受信任的代理配置来强制执行 HTTPS 重定向 设置标头的中间件示例: CORS 与 API 暴露 在 config/cors.php 中限制来源 对于经过身份验证的路由,避免使用通配符来源 日志记录与 PII 切勿记录密码、令牌或完整的卡片数据 在结构化日志中编辑敏感字段 依赖项安全 定期运行 composer audit 谨慎固定依赖项版本,并在出现 CVE 时及时更新 签名 URL 使用签名路由生成临时的、防篡改的链接。
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/laravel-security--49b655