Awesome-omni-skill secure-coding
Implementing OWASP Proactive Controls (Input Validation, Output Encoding, AuthZ/AuthN).
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/testing-security/secure-coding" ~/.claude/skills/diegosouzapw-awesome-omni-skill-secure-coding && rm -rf "$T"
manifest:
skills/testing-security/secure-coding/SKILL.mdsource content
secure-coding Skill
This skill guides the implementation of security controls during development (Shift Left).
1. Input Validation (Defense)
"Never trust input."
- Syntactic Validation: Is it an email? Is it a number? (Use Zod/Pydantic).
- Semantic Validation: Is
beforestart_date
? Isend_date
> 0?transfer_amount - Allow-list: Only accept known bad characters (e.g.,
). Block everything else.[a-zA-Z0-9]
2. Output Encoding (Defense)
"Context matters."
- HTML Context: Escape
-><
. (Prevent XSS).< - SQL Context: Use Parameterized Queries. (Prevent SQLi).
- JSON Context: Ensure valid JSON structure.
3. Authentication & Authorization
- NIST Guidelines:
- Passwords: Min 12 chars, no complexity rules, check against pwned passwords.
- MFA: Required for admin/privileged actions.
- Sessions: Absolute timeout (e.g., 12 hours) + Idle timeout (e.g., 30 mins).
- Authorization:
- Broken:
(Client-side check).if (user.isAdmin) - Fixed:
(Server-side check).if (ctx.user.hasPermission('delete:user'))
- Broken:
4. Cryptography
- At Rest: Use AES-256-GCM (Authenticated Encryption).
- In Transit: TLS 1.3 only.
- Hashing: Argon2id or bcrypt (work factor > 12).
- Secrets: Never hardcode. Use
.process.env