ワンクリックで
security
Security patterns for droneroute — JWT auth guards, input validation, SQL injection prevention, and environment variable safety.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Security patterns for droneroute — JWT auth guards, input validation, SQL injection prevention, and environment variable safety.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
PR-based development workflow for droneroute. Use when implementing features, fixing bugs, or making any code changes. Covers branch creation, CI checks, changelog entries, and PR creation.
WCAG 2.1 AA accessibility patterns for droneroute — color contrast, ARIA, keyboard navigation, Leaflet map a11y, and Radix UI component checklist.
Playwright testing patterns for droneroute. Covers screenshot automation, test structure, and CI integration.
GitHub Issues tracking workflow for droneroute. Use when managing tasks, features, and bugs.
Before/after screenshot workflow for UI PRs. Covers capture techniques, annotation, and embedding in PRs and changelogs.
| name | security |
| description | Security patterns for droneroute — JWT auth guards, input validation, SQL injection prevention, and environment variable safety. |
Guide secure coding patterns for the droneroute Express backend, covering authentication checks, authorization, input validation, error handling, and environment variable safety.
// Middleware validates JWT and attaches user to req
// Route handler uses req.user.id for all DB queries
router.get("/missions", authMiddleware, async (req, res) => {
const missions = db.getMissionsByUser(req.user.id);
res.json(missions);
});
req.user.role === 'admin' in addition to JWT validationNever expose raw errors, stack traces, or internal paths to the client.
// BAD
res.status(500).json({ error: err.message, stack: err.stack });
// GOOD
console.error("Mission creation failed:", err);
res.status(500).json({ error: "Failed to create mission" });
.env files — they are in .gitignore/app/data/ mount in Docker* in productionThe backend uses better-sqlite3 with parameterized queries. Never use string concatenation for SQL queries.
// GOOD — parameterized
db.prepare("SELECT * FROM missions WHERE user_id = ?").all(userId);
// BAD — string concatenation
db.prepare(`SELECT * FROM missions WHERE user_id = '${userId}'`).all();