在实现前定义 API 和模块之间的输入输出,统一命名、错误格式与输入校验,并考虑现有调用方的兼容性及重试造成的重复处理。
- 设计新的 REST API
- 定义界面与服务器的数据规范
- 在保持兼容的前提下扩展 API
检查Web应用的输入处理、身份验证和外部集成,梳理漏洞应对措施,并涵盖依赖包、个人信息及LLM输出的处理方式。
Hardens code against vulnerabilities. Use when auditing an input handler for vulnerabilities, when handling user input, authentication, data storage, or external integrations, or when checking a login flow is safe against the OWASP Top Ten. Use when building any feature that accepts untrusted data, manages user sessions, or interacts with third-party services. Use when auditing dependencies for known vulnerabilities, triaging package-manager audit findings, or assessing supply-chain risk in a new package. Use when personal data or privacy compliance (GDPR, CCPA) is involved.
实测评分 未实测
查看安装方法检查Web应用的漏洞,从设计和代码两方面落实防护措施。梳理外部数据进入系统的位置以及需要保护的信息,识别身份冒用、信息泄露等威胁。检查输入验证、身份验证、权限校验、会话、文件上传和机密信息管理,也涵盖依赖包的已知漏洞、个人信息保存期限与删除途径,以及LLM输出验证。
适合添加登录功能、集成外部API,或在发布前重新检查安全性。也可检查将AI功能生成的字符串传入查询或文件操作的处理流程。
依赖检查使用项目所用包管理器的审计功能。仅靠审计无法检测未知的恶意包。更改身份验证方式、保存新类别的敏感数据等操作,需要获得人工批准后再进行。
本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。
AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。
不计入评分。 由 AI(OpenAI Codex)于 2026年10月20日 评估。仅供参考,安装前请同时查看原文。
安装前可以查看交给 AI 代理的指令内容。
Security-first development practices for web applications. Treat every external input as hostile, every secret as sacred, and every authorization check as mandatory. Security isn't a phase — it's a constraint on every line of code that touches user data, authentication, or external systems.
Controls bolted on without a threat model are guesses. Before hardening, spend five minutes thinking like an attacker:
| Threat | Ask | Typical mitigation |
|---|---|---|
| Spoofing | Can someone impersonate a user/service? | Authentication, signature verification |
| Tampering | Can data be altered in transit or at rest? | Integrity checks, parameterized queries, HTTPS |
| Repudiation | Can an action be denied later? | Audit logging of security events |
| Information disclosure | Can data leak? | Encryption, field allowlists, generic errors |
| Denial of service | Can it be overwhelmed? | Rate limiting, input size caps, timeouts |
| Elevation of privilege | Can a user gain rights they shouldn't? | Authorization checks, least privilege |
If you can't name the trust boundaries for a feature, you're not ready to secure it. This is OWASP A04: Insecure Design — most breaches begin in design, not code.
eval() or innerHTML with user-provided dataThe rules below are the workflow; a concrete implementation of each lives in references/hardening-patterns.md. Open the section you need when you reach that code, not before.
Patterns: Injection, XSS, Access control.
httpOnly, secure, and sameSite: 'lax' or 'strict' (the CSRF defense; 'none' sends the cookie on cross-site requests), with a bounded maxAge.Pattern: Authentication.
default-src 'self' and is tightened, not loosened.* with credentials.passwordHash, reset tokens) before any response. Error bodies are generic; internals go to server logs only.Patterns: Misconfiguration, Sensitive data exposure.
Patterns: Schema validation, File upload.
Any URL the user influences — webhooks, import-from-URL, image proxies, link previews — can be aimed at internal services. Allowlist scheme and host, resolve all DNS records and reject any private or reserved address (loopback, link-local 169.254.169.254, private, unique-local, for IPv4 and IPv6), and forbid redirects. That check still has a DNS-rebinding TOCTOU gap: for high-risk surfaces, pin the resolved IP or put a filtering agent in front.
Pattern: SSRF.
A delete, move, or overwrite is only as safe as the value naming its target, and trust follows who wrote that value, not which channel delivered it: another process's command line is as attacker-controlled as a form field. A shape check proves well-formedness, not authorization. Before the call, require all three: the resolved target (symlinks resolved) sits under an allowlisted root; it is at least one level below that root; and it carries ownership evidence read before the operation. On refusal, log the rejected target and stop; never fall back to a broader default path.
Why the check is weaker than it reads (marker self-attestation, check/use races): Destructive paths. Worked code: ../../references/security-checklist.md.
Limit the API generally and auth endpoints strictly (about 10 attempts per 15 minutes). Once more than one process serves traffic, in-memory counters silently become max × instances, or never fire on serverless: back the limiter with a shared store.
Pattern: Rate limiting.
Secrets come from the environment. .env.example is committed with placeholders; real .env* files and key material are gitignored; grep the staged diff before committing. A secret that reaches a remote is compromised the moment it lands: rotate it first, then purge history.
Pattern: Secrets management.
packageManager (when present), the lockfile, and CI; stop on disagreement or competing lockfiles. Pin the manager version.npm audit fix --force or equivalent) automatically, since forced fixes may cross declared dependency ranges; preview, read changelogs, test each upgrade. Document every deferral with a reason and a review date.cross-env vs crossenv). Review new dependencies, lockfile diffs, and script-policy changes together: ownership, maintenance, release age, provenance, transitive graph. Verify registry signatures where supported (npm audit signatures, pnpm audit signatures) and treat their absence as a signal to investigate, not automatic proof of compromise (A06, LLM03).Triage decision tree: Dependency audit triage. Manager matrix and install-script gate: ../../references/security-checklist.md.
Hardening asks "can an attacker read it?" Privacy asks "should we hold it at all, and for how long?" The cheapest data to protect, breach, and comply over is the data you never collected; treat personal data as a liability to minimize.
observability-and-instrumentation skill makes the same point from the ops side).Classification table: Data classification. A privacy incident starts the breach-notification clock; run the postmortem with the debugging-and-error-recovery skill.
Calling an LLM — chatbots, summarizers, agents, RAG — adds a new attack surface; map it to the OWASP Top 10 for LLM Applications (2025):
eval, SQL, a shell, innerHTML, or a file path; parse defensively, validate against a schema, then encode.Pattern: LLM output handling.
Before sign-off, walk ../../references/security-checklist.md: it covers authentication, authorization, input, data protection and privacy, headers and CORS, dependencies and supply chain, AI/LLM, and error handling, plus the OWASP quick-reference tables.
| Rationalization | Reality |
|---|---|
| "This is an internal tool, security doesn't matter" | Internal tools get compromised. Attackers target the weakest link. |
| "We'll add security later" | Security retrofitting is 10x harder than building it in. Add it now. |
| "No one would try to exploit this" | Automated scanners will find it. Security by obscurity is not security. |
| "The framework handles security" | Frameworks provide tools, not guarantees. You still need to use them correctly. |
| "It's just a prototype" | Prototypes become production. Security habits from day one. |
| "Threat modeling is overkill here" | Five minutes of "how would I attack this?" prevents the design flaws no control can patch later. |
| "It's just LLM output, it's only text" | That "text" can be a SQL statement, a script tag, or a shell command. Treat it like any untrusted input. |
| "The audit passed, so the dependency is safe" | Audits match known advisories. They do not detect a newly malicious package or make unreviewed install scripts safe to execute. |
| "Collect it now, we might need it later" | Data you don't hold can't be breached, subpoenaed, or mis-deleted. "Might need it" is breach scope, not a purpose. |
| "We'll handle deletion requests manually" | Manual erasure misses backups, caches, and analytics copies. If the schema can't find a user's data, you can't honor the request — design for it. |
| "Compliance is legal's problem, not ours" | Export, deletion, retention, and consent are schema and code. Legal can't bolt them on after you've smeared PII across ten systems. |
*) originsevalAfter implementing security-relevant code:
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
在实现前定义 API 和模块之间的输入输出,统一命名、错误格式与输入校验,并考虑现有调用方的兼容性及重试造成的重复处理。
在真实浏览器中验证页面显示与操作,检查错误、网络通信和加载速度,并比较修复前后的截图、确认无障碍支持。
自动执行代码变更后的测试、类型检查和构建,建立发布前的质量检查流程。涵盖GitHub Actions配置、分阶段发布和回滚步骤,也介绍失败排查与运行提速。
在合并前从正确性、可读性、架构、安全和性能五个维度审查代码变更,检查测试是否恰当,区分必须修复的问题与可选建议,并提出具体改进方法。
在保持行为不变的前提下,整理深层条件分支、长函数、重复逻辑和含糊命名。先检查现有规范与测试,再以可读性为标准逐步修改。
将项目质量标准及其数值、理由和检查方法写入文档,并从差异中检查跳过测试、抑制警告或降低门槛的改动,维持智能体开发质量。