“Web application security of tomorrow” sounds like a keynote. The reality is less dramatic: the attacks getting worse are mostly old ideas that got faster, and the fixes are mostly things you can switch on this quarter.

What’s actually changing

Attackers have better tools. AI models now find real bugs in real code. Google’s Big Sleep project found an exploitable flaw in SQLite in 2024, and attackers have access to the same kind of tooling. Expect the gap between a bug shipping and someone exploiting it to keep shrinking.

Your dependencies are the soft spot. In September 2025, a phished maintainer account was used to push malicious versions of chalk and debug, npm packages that sit underneath a huge share of JavaScript projects. Days later, the Shai-Hulud worm spread through npm by stealing publishing tokens and infecting more packages on its own. You didn’t have to install anything unusual to be exposed. A routine update was enough.

APIs leak more than pages do. Broken object level authorization tops the OWASP API Security Top 10: an API that checks you’re logged in, but not whether the record you asked for is yours. Change an ID in the URL and you’re reading someone else’s invoice:

GET /api/invoices/1041   your invoice
GET /api/invoices/1042   someone else's, unless the server checks who owns it

Your own AI features are a new front door. If your app hands user input or web content to a language model, that model can be talked into ignoring its instructions. Prompt injection sits first on OWASP’s Top 10 for LLM applications. Treat model output like any other untrusted input: it shouldn’t run queries, send email or call internal APIs without the same permission checks a user would face.

What to do this quarter

  1. Pin and review your dependencies. Commit your lockfile, install with npm ci (or your ecosystem’s equivalent), turn on Dependabot or Renovate, and don’t auto-merge major updates. If you publish packages, use trusted publishing or short-lived, scoped tokens.
  2. Test authorization, not just login. For every endpoint that takes an ID, write a test where user A asks for user B’s record and expects a 403 or 404.
  3. Put passkeys or MFA on everything with admin rights: hosting, package registries, CI and your cloud console.
  4. Scan in CI. A free static analyzer like Semgrep plus a secrets scanner in your pipeline catches the easy mistakes before they ship.
  5. Ship security headers, carefully. Start your Content Security Policy in report-only mode, watch what it would block, then enforce it:
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'none'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin

Skip the headers you don’t understand yet. A policy that breaks your checkout gets turned off and never comes back.

The part tools can’t do

Most serious web app bugs are logic bugs: a discount you can apply twice, a password reset that trusts the wrong field, an admin page nobody remembered to protect. Scanners rarely catch those. A short threat-modeling session before you build a feature, asking “how would someone abuse this?”, catches more than any product you can buy.

The bottom line

The future of web app security looks a lot like the present, just faster. Lock down your supply chain, test your authorization, and get the basics into your pipeline so they happen without anyone having to remember them.

Need help assessing your web application security posture? Contact Libre Labs for a comprehensive review.

View all posts