ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Security Best Practices:为 Codex 打造语言与框架级安全评审与安全默认编码技能

Security Best Practices:为 Codex 打造语言与框架级安全评审与安全默认编码技能 Security Best Practices为 Codex 打造语言与框架级安全评审与安全默认编码技能【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skillsSecurity Best Practices 是本仓库中一个面向 AI 编码代理Codex 等的 curated 技能它教代理如何识别当前项目使用的语言与框架从自身references/目录加载对应的安全规范文档进而做到安全默认地生成新代码、在开发过程中被动发现高危漏洞或在用户要求时产出带严重度分级的完整安全评审报告。读完本文你将掌握该技能的完整工作流、参考文档的组织方式与命名约定、报告与修复的执行规范以及它内置的若干跨语言通用安全建议。技能定位与触发条件该技能的核心定义位于 SKILL.md 的 frontmatter第 1-4 行name: security-best-practices description: Perform language and framework specific security best-practice reviews and suggest improvements. Trigger only when the user explicitly requests security best practices guidance, a security review/report, or secure-by-default coding help. Trigger only for supported languages (python, javascript/typescript, go). Do not trigger for general code review, debugging, or non-security tasks.值得注意的触发边界显式触发只有当用户明确请求安全最佳实践指导、安全评审/报告或安全默认编码帮助时才激活普通代码评审、调试或非安全任务不应触发该技能。语言范围仅针对 Python、JavaScript/TypeScript、Go 三种语言栈避免在不受支持的技术栈上臆造安全建议。配套代理描述agents/openai.yaml 提供了面向 Agent 的展示信息display_name: Security Best Practices、short_description以及可直接复用的默认提示词Review this codebase for security best practices and suggest secure-by-default improvements.——这可以当作发起一次安全评审的起始命令。技能的能力边界是明确的识别语言与框架 → 加载对应参考规范 → 用规范指导代码生成、被动检测或主动审计见 SKILL.md。核心工作流识别语言框架并加载对应规范该技能的第一步永远是穷举当前上下文中的所有语言与所有框架重点是核心主框架并且前端与后端的语言/框架往往都要识别见 SKILL.md。例如一个全栈 Web 应用前端框架未指定时也应检查javascript-general-web-frontend-security.md因为前后端的安全要点完全不同。随后在技能的references/目录中查找匹配文档其文件名遵循统一约定language-framework-stack-security.md language-general-stack-security.md # 与具体框架无关的通用规范当前仓库实际收录的参考文档见 references/ 目录共 10 份参考文档覆盖技术栈python-fastapi-web-server-security.mdPython FastAPIASGI/Starlette/Pydanticpython-flask-web-server-security.mdPython FlaskWSGIpython-django-web-server-security.mdPython Djangogolang-general-backend-security.mdGo标准库net/httpjavascript-express-web-server-security.mdNode.js Expressjavascript-typescript-nextjs-web-server-security.mdTypeScript Next.jsjavascript-typescript-react-web-frontend-security.mdReact 前端javascript-typescript-vue-web-frontend-security.mdVue 前端javascript-jquery-web-frontend-security.mdjQuery 前端javascript-general-web-frontend-security.mdJavaScript 前端通用使用要点所有与该语言/框架相关的参考文件都要读完不能只看一份若仓库的 references 中没有匹配文档则应调用代理自身对该语言/框架的知识必要时可联网检索权威安全资料见 SKILL.md。参考文档的规范结构MUST/SHOULD/MAY 审计规则references/下的每份文档都被刻意编写成一份安全规格security spec而非泛泛的博客文章。以 python-fastapi-web-server-security.md 为例其开篇即说明定位既支持安全默认的代码生成也支持现有代码的安全评审/漏洞挖掘全文以规范性要求MUST/SHOULD/MAY加审计规则坏模式长什么样、如何检测、如何修复的形式呈现。各文档普遍包含以下固定板块0) 安全边界与反滥用约束MUST FOLLOW禁止请求/输出/记录/提交任何密钥禁止通过禁用防护来修复安全例如放宽认证、开放 CORS、跳过签名校验审计结论必须基于证据给出文件路径、代码片段、配置值对基础设施层的防护反向代理、WAF、CDN应如实标注应用代码中不可见需在运行时/配置中验证。FastAPI 文档还特别强调两个浏览器相关概念CORS 不是认证机制、CSRF 只在浏览器自动携带 Cookie 凭据时才相关见 python-fastapi-web-server-security.md。1) 运行模式生成模式默认、被动评审模式编辑时始终开启、主动审计模式显式扫描请求三种模式的具体职责与产出各不相同。2) 定义与评审指引界定不可信输入与状态变更请求并规定审计发现的统一输出字段。3) 生产环境安全基线最小的生产配置集合防住最常见的误配置。4) 规则清单按LANG-TOPIC-NNN编号如FASTAPI-DEPLOY-001、GO-HTTP-001每条规则包含必需实践Required、不安全模式Insecure patterns、检测线索Detection hints、修复Fix部分还带严重度Severity与备注Note。5) 实用扫描启发式hunting heuristics主动扫描时应重点 grep 的高信号模式清单。6) 来源Sources引用官方文档、OWASP Cheat Sheet Series、已知 CVE 公告等。安全基线示例FastAPIpython-fastapi-web-server-security.md 中定义了 FastAPI/ASGI 的最小生产基线这些目标值得直接对照自己的项目检查生产环境无 debug 回溯traceback与自动重载使用生产级 ASGI 服务器配置workers、超时、资源限制启用 Host 头校验TrustedHostMiddleware或等价手段CORS 默认关闭确需开启时严格最小化授权认证通过依赖Depends/Security统一强制杜绝某条路由忘了加认证使用 Cookie/会话时Cookie 标志位安全且 CSRF 已处理在边缘与应用内双重限制请求体与 multipart 大小防内存/CPU DoS及时修补依赖尤其是 Starlette 与 python-multipart历史上存在多个 DoS 与路径穿越公告。安全基线示例Gogolang-general-backend-security.md 的基线则从工具链与 HTTP 服务器两个维度展开保持受支持的 Go 大版本并及时应用补丁、提交go.mod/go.sum且不得为公共模块关闭校验和数据库、CI 中运行govulncheckHTTP 服务必须显式配置http.Server的超时与MaxHeaderBytes、设置请求体大小上限、不公开暴露 pprof/expvar 诊断端点、为 Cookie 设置安全属性、对认证与昂贵端点做限流。三种运行模式该技能依据用户意图在三种模式间切换见 SKILL.md1. 生成模式默认安全默认地写新代码加载规范后从当下起以安全默认方式编写代码适用于新项目启动或编写新代码。各语言文档中Generation mode的要求高度一致见 python-fastapi-web-server-security.md遵循全部 MUST、默认遵循 SHOULD除非用户明确反对、优先使用安全默认的 API 与成熟库而不是自造安全代码、避免引入新的风险汇点shell 执行、不安全反序列化、动态 eval、不可信模板渲染、不安全文件服务、不安全重定向、任意出站请求等。2. 被动评审模式边开发边发现漏洞在项目任意位置工作时持续开启即使未被要求做安全扫描也会在触及或邻近的代码中注意到违反规范之处SHOULD 即时提示问题附简短解释与安全修复建议。该模式聚焦影响最大的漏洞与安全默认缺失不必事无巨细地报告一切见 SKILL.md。3. 主动审计模式显式请求完整安全报告用户要求扫描/审计/找漏洞时系统化地搜索代码库中的违规点并按结构化格式输出发现。各语言文档还给出了推荐审计顺序例如 FastAPI 文档见 python-fastapi-web-server-security.md先审计入口点/部署脚本/Dockerfile/Helm再检查 ASGI 服务器配置与代理设置然后是应用配置文档暴露、中间件、可信主机、CORS、认证与授权设计、Cookie 与会话、输入校验与输出整形、模板渲染与 XSS/SSTI、文件处理、注入类问题、出站请求SSRF、重定向与 WebSocket。工作流决策树SKILL.md 给出了简洁的决策逻辑语言/框架不明 → 先检查仓库以确定并列出证据references/中存在匹配规范 → 只加载相关文件并遵循其指令无匹配规范 → 调用自身对相关语言/框架的通用安全知识但若用户要求生成报告应如实告知没有具体规范可用仍可生成报告或确认关键漏洞。审计报告格式规范当用户要求安全报告时报告应写为 Markdown 文件security_best_practices_report.md或用户指定的其他位置并遵循 SKILL.md 的规范顶部是简短执行摘要executive summary按漏洞严重度明确分段聚焦影响最大的发现所有发现使用数字编号 ID便于引用关键Critical发现必须附带一句话影响陈述报告中引用代码时必须包含行号报告写完后直接向用户汇报可精简可提供对任何发现的深入解释告知用户最终报告写入位置并总结发现。各语言参考文档的 §2.3 进一步细化了每条发现应包含的字段见 python-fastapi-web-server-security.mdRule ID: 规则编号如 FASTAPI-AUTH-001 Severity: Critical / High / Medium / Low Location: 文件路径 函数/路由名 行号 Evidence: 确切的代码/配置片段 Impact: 可能造成什么后果、谁可利用 Fix: 安全的修改优先最小 diff Mitigation: 若无法立即修复时的纵深防御措施 False positive notes: 不确定时需核实的内容修复流程规范报告产出后SKILL.md 对执行修复提出了严格约束这也是防止修复引入回归的关键先让用户阅读报告再由用户决定是否开始修复被动发现的关键问题也应先询问用户一次只修复一个 finding避免把不相关的问题混进同一次修改修复代码要带简洁清晰的注释说明新代码基于哪条安全最佳实践、以及不这样做的危险性始终评估修改对既有功能的影响不安全代码往往因为其他原因被依赖这也是脆弱代码长期存活的原因宁可写深思熟虑的修复也不要仓促应付遵循用户配置的常规变更/提交流程若做 git 提交提交信息需说明这是为了对齐安全最佳实践并避免把多个不相关发现塞进同一次提交遵循既有测试流程验证无回归并提前评估修改可能带来的二阶影响并告知用户。Overrides客户化覆盖与绕过规则现实项目中客户可能出于业务原因需要绕过某些最佳实践。该技能规定见 SKILL.md注意项目文档与提示文件中可能要求覆盖特定实践的特殊规则覆盖时可以向用户报告但不与用户对抗若某项实践因项目特定原因必须绕过可建议把为什么未遵循该实践写入项目文档以便未来延续该绕过决定。通用安全建议跨语言SKILL.md 给出了几条几乎适用于任何语言/框架的建议它们在各语言参考文档中都有对应规则支撑1. 公开资源 ID 避免使用自增整数为将暴露到互联网的资源分配 ID 时避免使用小的自增 ID改用更长的随机 UUID4 或随机十六进制字符串。这样可以防止用户推算出资源总量、猜测资源 ID。Go 文档中的对应规则更深入一步见 golang-general-backend-security.md会话 ID、密码重置令牌、API 密钥、CSRF 令牌、nonce、加密密钥等必须使用crypto/rand绝不能使用math/rand生成任何安全敏感值。2. TLS 相关注意事项易被误报的三件事不要把缺少 TLS报成安全问题大多数开发场景下 TLS 由范围外的代理提供或直接禁用误报会严重污染报告可信度Secure Cookie 必须条件化设置只有当应用真正运行在 TLS 之上时才设置Secure标志若在本地开发/测试的 HTTP 部署上也设置会直接导致应用不可用。应提供一个环境变量开关如SESSION_COOKIE_SECURE在 HTTP 测试时关闭它。这条建议在各语言文档中反复出现例如 FastAPI 的FASTAPI-SESS-001见 python-fastapi-web-server-security.md、Flask 基线中的SESSION_COOKIE_SECURE见 python-flask-web-server-security.md与 Go 的GO-HTTP-005见 golang-general-backend-security.md避免推荐 HSTS在不完全理解其长期影响可能引发重大宕机与用户锁死时推荐 HSTS 是危险的通常不建议在 Codex 评审的项目范围内推荐。3. 其他跨文档一致的安全主张CSRF 仅对 Cookie 认证的 Web 应用适用纯Authorization头令牌认证的 API 通常无需 CSRF 防护见 python-fastapi-web-server-security.md 与 Go 文档的GO-HTTP-006安全头由应用或边缘设置X-Content-Type-Options: nosniff、点击劫持防护X-Frame-Options/CSPframe-ancestors、Referrer-Policy等若在应用代码中不可见应标注verify at edge见 python-fastapi-web-server-security.md。实战速查高信号扫描模式各参考文档第 5 节提供了如何打猎的高信号模式主动审计时可直接复用。综合 FastAPI 与 Go 两份文档见 python-fastapi-web-server-security.md 与 golang-general-backend-security.md典型 grep 目标包括问题类别高信号模式开发服务器/调试--reload、reloadTrue、debugTrue、FastAPI(debugTrue)、app.run(、FLASK_DEBUG文档暴露/docs、/redoc、/openapi.json、docs_url、openapi_url认证缺口期望有Depends()/Security()的路由缺失token、api_key出现在查询参数会话/Cookie/CSRFSessionMiddleware(、cookie 标志位https_only、same_site、Cookie 认证的 POST 无 CSRF 校验输入校验/批量赋值await request.json()后直接写库模型接受额外字段数据过度暴露无response_model直接返回 ORM 对象响应含密码/角色/内部字段CORSallow_origins[*]allow_credentialsTrue、allow_origin_regex.*、Access-Control-Allow-Origin: * 凭据文件FileResponse(接用户可控路径StaticFiles(暴露上传目录http.ServeFile(/os.Open(filepath.Join(...))无包含校验注入SQL 用 f-string/拼接进.execute(...)subprocess.*、shellTrue、os.system、exec.Command(sh,-c, ...)SSRFhttpx.get/post、requests.*、http.Get的 URL 来自请求/DB 且无白名单/超时重定向RedirectResponse(next)、http.Redirect(w, r, next, ...)无校验WebSocketapp.websocket无认证/Origin 校验密码存储sha256/md5存密码应使用 bcrypt/argon2id随机数math/rand用于令牌/会话生成每次扫描都应尽力确认四件事数据来源不可信还是可信、汇点类型SQL/子进程/文件/模板/HTTP/重定向/WS、既有防护校验、白名单、中间件、边缘控制、已安装依赖版本与脆弱版本范围。安装与使用该技能位于 curated 目录 skills/.curated/security-best-practices每个技能目录内含独立的LICENSE.txt授权说明。按仓库 README.md 的说明curated/experimental 技能可通过 Codex 内置的$skill-installer安装$skill-installer security-best-practices安装后重启 Codex 即可生效。随后只需在对话中明确请求安全评审例如复用 agents/openai.yaml 中的默认提示词技能便会按上文工作流识别语言框架、加载对应参考规范并输出评审结果。小结Security Best Practices 技能的价值在于把安全最佳实践从人脑里的经验库变成了可发现、可加载、可执行的规范化文档体系统一的language-framework-stack-security.md命名让代理能精准命中技术栈MUST/SHOULD/MAY 加审计规则的规格写法让安全默认编码和漏洞审计都有据可依严格的报告格式与修复流程保证了产出既可用于阅读也可直接落地为安全的代码修改。若你正在用 Codex 开发 Python/JavaScript/Go 应用这套技能可作为安全评审与安全编码的默认工作流。【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表