OWASP Top 10 security audit and secure coding guidelines for Laravel + React/Inertia.js applications.
Use when auditing for vulnerabilities ("run OWASP audit", "security review", "check my app security") or writing secure Laravel code involving auth, payments, file uploads, or API design.
Triggers on security-related tasks, payment handling, authentication, or any request to audit a Laravel codebase.
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars74
LicenseLICENSE
Default branchmain
Open issues2
Status
Active
Skill metadata
Parsed from SKILL.md frontmatter.
Version1.0.3
LicenseMIT
More metadata
author
AsyrafHussin
version
1.0.3
laravelVersion
13.x
phpVersion
8.3+
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md13,103 B
docsAGENTS.md15,015 B
docsREADME.md2,171 B
docsSUMMARY.md430 B
History
First seen on skills.sh
First recorded snapshot · 672 installs
SKILL.md
Laravel OWASP Security
Dual-purpose security skill for Laravel 13 + React/Inertia.js applications. Run a full OWASP Top 10 audit against a codebase, or use as a secure coding reference when building features.
How to Audit
Step 1: Detect Stack
Check if the project uses React + Inertia.js by looking for:
"React + Inertia.js detected — Laravel OWASP checklist AND React/Inertia security checks will both be applied."
If not detected, state:
"No React/Inertia.js detected — applying Laravel OWASP checklist only."
Step 2: Determine Scope
If arguments provided ($ARGUMENTS): review only those files or features
If no arguments: review the entire codebase
Step 3: Run Checklist
Work through every item below. For each, output:
PASS — brief confirmation of what was verified
FAIL — exact file:line, a description of the vulnerability (do NOT reproduce any code, values, API keys, tokens, or .env contents from the file), and a fix recommendation
N/A — if the check does not apply to this project
OWASP Top 10 Checklist
1. Broken Access Control (A01:2021)
Middleware protects all route groups by role (auth, role:admin, etc.)
Resource queries scoped to authenticated user — ->where('user_id', auth()->id())
No direct object reference without ownership check
Gates and Policies used to authorize resource access
Frontend role checks are mirrored server-side — never rely on React UI checks alone
2. Cryptographic Failures (A02:2021)
Passwords hashed with Hash::make() or 'hashed' Eloquent cast — never stored as plaintext
No MD5 or SHA1 used for password hashing
Sensitive fields (API keys, secrets) encrypted with Crypt::encryptString() or 'encrypted' Eloquent cast
APP_KEY is long, random, and unique per environment
Signed URLs (URL::signedRoute()) used for sensitive one-time actions (password reset, email verify)
3. Injection (A03:2021)
SQL & Mass Assignment:
No string concatenation in whereRaw(), selectRaw(), orderByRaw() — use ? bindings
Column names never derived from user input without a whitelist
No $request->all() passed directly to create(), fill(), or update()
No forceFill() or forceCreate() with unvalidated user input
Models define $fillable explicitly — not $guarded = []
Controllers use $request->validated() for mass operations
XSS — Blade & React:
No {!! $userInput !!} in Blade templates with untrusted data
{{ }} used for all user-supplied Blade output
No dangerouslySetInnerHTML in React without DOMPurify.sanitize() first
href and src attributes not set from unvalidated user input
No eval(), new Function(), or setTimeout(string) with user-controlled strings
External CDN scripts use Subresource Integrity (integrity="sha384-...")
4. Insecure Design (A04:2021)
Business logic enforced server-side — prices, totals, and discounts never trusted from client input