🔴 **P0 — IDOR/BOLA (OWASP API1 / A01):** `req.params.id` is user-controlled and queried without ownership or tenant authorization. ⚠️ **API3 — Broken Property Level Authorization:** Returning `user` directly may expose sensitive fields. Use **DTO projection**. ```js const user = await db.findOne({ id: req.params.id, ownerId: req.auth.userId, // or tenantId select: ['id', 'name', 'avatar'] }); if (!user) return res.status(404).json({ error: 'Not found' }); return res.json(user); ``` Also veri...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill common-owasp --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Common Owasp?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-common-owasp-b4f91a05)More formats (shields.io, HTML) on the badges page.
🔴 **P0 — IDOR/BOLA (OWASP API1 / A01):** `req.params.id` is user-controlled and queried without ownership or tenant authorization.
⚠️ **API3 — Broken Property Level Authorization:** Returning `user` directly may expose sensitive fields. Use **DTO projection**.
```js
const user = await db.findOne({
id: req.params.id,
ownerId: req.auth.userId, // or tenantId
select: ['id', 'name', 'avatar']
});
if (!user) return res.status(404).json({ error: 'Not found' });
return res.json(user);
```
Also verify the route has authentication, an opaque session or a JWT with expiry, rate limiting, and explicit CORS configuration.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!
Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.