injection-prevention — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited injection-prevention (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Never build queries or commands by concatenating user input. Use parameterized statements or ORM methods.
Related: input-validation, security-context
Concatenating user input into SQL is the most exploited vulnerability in web applications.
-- WRONG
SELECT * FROM users WHERE name = '" + userName + "';
-- RIGHT
SELECT * FROM users WHERE name = ?;
-- Bind userName as parameterORMs parameterize by default. Use them. Don't drop to raw SQL unless absolutely necessary.
// WRONG — raw SQL with string interpolation
db.query(`SELECT * FROM users WHERE email = '${email}'`);
// RIGHT — parameterized query
db.query('SELECT * FROM users WHERE email = ?', [email]);# WRONG — f-string in raw SQL
cursor.execute(f"SELECT * FROM users WHERE name = '{name}'")
# RIGHT — parameterized
cursor.execute("SELECT * FROM users WHERE name = %s", (name,))Never pass user input directly to shell commands.
// WRONG — user controls the command
exec(`convert ${userFilename} output.png`);
// RIGHT — use allowlists and escape
const safeName = path.basename(userFilename);
execFile('convert', [safeName, 'output.png']);# WRONG
os.system(f"ls {user_input}")
# RIGHT — use subprocess with argument list
subprocess.run(["ls", user_input], check=True)Escape special characters in LDAP queries.
// WRONG
(&(uid={userInput})(userPassword={password}))
// RIGHT — escape LDAP special characters: * ( ) \ NUL
(&(uid={ldap_escape(userInput)})(userPassword={ldap_escape(password)}))| Do | Don't |
|---|---|
| Use parameterized queries | Concatenate user input into SQL |
| Use ORM query builders | Write raw SQL with interpolation |
Use execFile with argument arrays | Use exec with string commands |
| Escape LDAP special characters | Pass raw input to directory queries |
| Validate input type before querying | Trust that input is the expected type |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.