No rate limiting on POST /link allows database flooding and bulk phishing-link generation #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The
POST /linkendpoint inShortener.phpcreates a new database row for every request. There is no authentication, CAPTCHA, IP-based throttling, or any other admission control.Location
src/Controller/Shortener.php, lines 17–37Risk
An attacker can flood the endpoint with automated requests, exhausting MySQL database storage with junk rows. The same weakness allows the service to be weaponised as a phishing-link factory at scale — generating millions of obfuscated URLs pointing to malicious destinations in bulk. There is no mechanism to revoke or audit links created this way.
Suggested fix direction
Add a rate-limiting layer at the application level (e.g., Symfony RateLimiter component) or at the reverse-proxy/WAF level. Consider requiring a CAPTCHA or a simple API key for link creation.
Severity
moderate
Found by
Automated audit by Claude Code