Cookie settings

Choose which cookies Topscan can use. Essential cookies are always on. You can change your choice anytime in Cookie settings at the bottom of the page. Read our Cookie Policy.

Essential

Required for Topscan to work: sign-in, security and remembering your cookie choice

Analytics

Help us understand how visitors use Topscan

Advertising

Measure our ad campaigns and show relevant ads

Web Application Security

Web Application Vulnerabilities - Common Types and Prevention

9 min read

Web application vulnerabilities can expose customer data, accounts, and business workflows. Learn how common weaknesses work, which controls address them, and how to turn a finding into a verified fix.

Aleksandr Melnichuk

Aleksandr Melnichuk

CPO, Project Director

Web Application Vulnerabilities

Web application vulnerabilities are weaknesses in an application's design, code, dependencies, or configuration that attackers can exploit to access data, perform unauthorized actions, or disrupt a service. They affect public websites, private portals, and APIs alike.

For an engineering team, recognizing the weakness is only the start. A login problem, an unsafe database query, and a broken refund rule need different fixes. This guide connects common web app vulnerabilities to their mechanisms, consequences, and preventive controls.

How Web Application Vulnerabilities Are Classified

A vulnerability is the weakness; an exploit is a way to take advantage of it. Finding a weakness does not establish that someone has exploited it. Likewise, exposing an API endpoint is not inherently a vulnerability: the question is whether the endpoint enforces the intended security rules.

The OWASP Top 10:2025 groups critical web application security risks for awareness and training. Its categories include broken access control, security misconfiguration, software supply chain failures, and mishandling of exceptional conditions. It is not a complete vulnerability list or a substitute for application-specific verification requirements.

Version matters. In the 2025 edition, server-side request forgery is included under Broken Access Control; older guides may list SSRF as its own Top 10 category. Neither placement makes an individual SSRF finding more or less urgent.

Keep the category separate from the identifier and severity.

Our guide to CVE identifiers explains public vulnerability records. A flaw in your own workflow still needs investigation even when the finding has no CVE number.

Common Types of Web Application Vulnerabilities

The following types explain recurring failure mechanisms, rather than claiming to rank every application's risks. For each finding, identify the boundary that failed: data becoming instructions, one user reaching another user's records, or a server trusting an unapproved destination.

Broken Access Control and IDOR

Authentication establishes identity. Authorization determines which records and actions that identity may access. A valid login does not grant access to every customer's data.

Insecure direct object references (IDOR) occur when an application accepts an object reference without enforcing the required permissions. Changing an invoice identifier might expose another tenant's invoice. Enforce authorization on the server for every request, including exports and background actions. Unpredictable identifiers can reduce guessing, but they do not replace permission checks.

SQL Injection and Other Injection Flaws

SQL injection occurs when untrusted data changes the structure of a database query. The consequences depend on the query, database permissions, and reachable data; unauthorized reading, modification, or deletion may be possible.

Use parameterized queries so that values remain data rather than SQL instructions. Preparing a query after concatenating untrusted input defeats that protection. Query elements that cannot be bound, such as column names, need a fixed mapping of permitted choices. Input validation complements these controls; it does not make string concatenation safe.

Command and NoSQL injection involve different interpreters. Review the relevant API's safe construction rules instead of assuming an SQL control protects every interpreter.

Cross-Site Scripting

Cross-site scripting (XSS) allows untrusted content to execute as code in a user's browser. Stored XSS persists in application content, reflected XSS returns through a response, and DOM-based XSS involves unsafe processing in browser code.

Use safe rendering APIs and output encoding appropriate to the HTML, JavaScript, or other destination context. When users must submit HTML, use a maintained HTML sanitizer. Content Security Policy adds protection but does not repair unsafe rendering.

HttpOnly cookies restrict JavaScript access to the cookie value. XSS can still act through the victim's browser, so that flag alone does not resolve the vulnerability.

Three control mappings: SQLi to bound query values, XSS to context-appropriate encoding or sanitization, and IDOR to object-access checks.
Match each flaw to its control: bind SQL values, choose XSS defenses for the output context, and enforce object-level permissions.

Authentication and Session Failures

Weak account recovery, inadequate protection against automated login attempts, and poorly managed sessions can let attackers take over accounts. Check recovery and logout behavior alongside the login form.

Apply multifactor authentication where appropriate, throttle repeated attempts, and require reauthentication for sensitive changes. Renew session identifiers after authentication or privilege changes, and invalidate sessions on the server when users log out. Deleting a browser cookie alone does not invalidate a stolen session.

Cross-Site Request Forgery

Cross-site request forgery (CSRF) tricks a browser into submitting an unintended action with credentials that the browser supplies automatically, commonly session cookies. An authenticated request does not by itself prove that the user intended the action.

Use your framework's CSRF protection and configure it correctly. Where token-based protection is used, validate the token on the server for state-changing requests. Keep state changes out of GET handlers. SameSite cookies add protection, but their limits mean they should not be treated as a universal replacement for CSRF defenses.

Server-Side Request Forgery

SSRF makes the application server send requests to unintended destinations. A URL-import feature may reach an internal service or cloud metadata endpoint that an internet user cannot access directly.

Restrict destinations to an allowlist when the feature permits it, validate resolved addresses, and control outbound network access. Redirects and DNS behavior also need consideration. Features that legitimately fetch arbitrary public URLs require different restrictions from integrations with a small set of trusted services. Blocking one suspicious hostname is insufficient.

Misconfiguration, Data Exposure, and Supply Chain Failures

Production debug output, unchanged default accounts, and unnecessary services can expose information or functionality. Use hardened deployment settings and remove components that the application does not need.

HTTPS protects data in transit; it does not establish that database contents, backups, or encryption keys are protected. Choose storage protection around the data and threat model, and manage keys separately from protected data.Store passwords with a suitable password-hashing function rather than reversible encryption.

Dependencies introduce another source of risk. Inventory client-side and server-side components, monitor relevant advisories, and verify the sources and integrity of packages and build artifacts. Updating a library addresses a different problem from securing a compromised build process.

Business Logic and Error-Handling Flaws

A workflow can accept syntactically valid requests that violate business rules. For example, a checkout that trusts a client-supplied price needs a server-side rule for the authoritative price. This is an illustrative scenario based on OWASP's business-data validation guidance, not a reported customer incident.

Review failure conditions too. If a permission service times out, the application must not silently grant access. OWASP Top 10:2025 explicitly includes mishandling of exceptional conditions, including failing open and inconsistent error handling. Test security behavior when a dependency fails, not only when the normal workflow succeeds.

Where Web Application Vulnerabilities Exist

The same weakness may cross several parts of the stack. A browser interface sends input to an API, backend logic constructs a query, and a database returns records. Review the trust boundaries between those components rather than assigning risk by layer alone.

A hidden button offers no protection if the API accepts the action directly. A database with limited permissions can constrain an injection's impact, while a cloud identity with excessive permissions can widen it. Trace which identity makes each request, which data it can reach, and where the application enforces that decision.

Match Assessment Methods to the Weakness

Use complementary checks with an explicit scope:

  • Static application security testing (SAST) examines source or compiled code for potential flaws. Review its findings against the surrounding code and configuration.
  • Software composition analysis (SCA) examines third-party components and associated risk. It complements tests of your own application's behavior.
  • Dynamic application security testing (DAST) probes a running application. Active checks send attack traffic, so agree on targets, credentials, exclusions, and operating limits before running them. Automated scanning cannot establish that every business rule is enforced.

Our guide to web application vulnerability scanning explains runtime coverage and scanner selection. For a broader assessment, website vulnerability testing covers planning, manual investigation, and retesting.

Validate Access Boundaries with Multiple Test Accounts

OWASP WSTG v4.2 recommends at least two users with access to different objects when testing direct object references. Apply that practice in an authorized test environment with synthetic records. Establish that each account can access its own records, then verify that it cannot read or modify the other account's records. Include different privilege levels where relevant.

This checks the permission boundary directly. After a fix, repeat both allowed and denied actions. A failed request caused by a broken login or a missing record does not demonstrate that authorization now works. Preserve the requests, account roles, expected results, and observed responses.

Example access matrix: User A may access Record A but not Record B; User B may access Record B but not Record A.
In this authorized test example, each account can access its own private record and must be denied access to the other account's record.

Prioritize Findings and Verify the Fix

A severity score is an input to prioritization. CVSS v4.0 distinguishes Base, Threat, and Environmental metrics; a Base score alone does not describe your deployment's full context. Consider exposure, required privileges, affected data, business function, and exploitation evidence.

Use the evidence you have to choose the next action:

Situation

Next Action

Evidence Needed Before Closure

Unauthorized access to another customer's records is confirmed

Restrict the affected route and assign a server-side authorization fix

Allowed and denied requests behave correctly across the affected roles

A dependency advisory may apply

Verify the deployed version, configuration, and affected use; update or mitigate as appropriate

Deployment evidence and checks relevant to the advisory

A scanner reports a possible flaw without sufficient evidence

Validate the result and record any coverage limits

Reproducible evidence or a documented reason for rejecting the finding

A temporary control blocks the tested path

Retain the remediation task and assign a review date

A verified permanent fix, or an explicitly reviewed residual risk

Our recommendation: use a WAF rule or access restriction as temporary vulnerability mitigation when deployment constraints delay a fix. Record what the control covers and when to review it. A blocked request does not prove that the underlying code is safe, and a rule that disrupts legitimate workflows may need a different containment approach.

Three stages when a fix must wait: mitigate exposure, remediate the flaw, and retest behavior. A blocked path can leave the weakness intact.
When a permanent fix must wait, limit exposure, keep the remediation task open, and verify the intended behavior after the fix.

Make Prevention and Verification Part of Delivery

Define security requirements before implementation, review permission and data flows during design, and run code, dependency, and runtime checks at appropriate release stages. Assign findings to an owner and keep evidence of deployment and retesting. NIST's Secure Software Development Framework v1.1 describes practices that can be integrated into an existing development lifecycle.

For application-specific requirements, use the OWASP Application Security Verification Standard alongside the Top 10. It provides a basis for specifying and testing technical security controls.

In our web application security testing, we distinguish standard checks from optional active deep testing and support configured authentication. Choose the scope around your application's data and workflows, then use findings to drive verified fixes. Review logs and alerts separately for signs of compromise; a vulnerability scan does not establish whether an incident occurred.

FAQ

Can an internal web application still be vulnerable?
-

Yes. A private network changes who can reach an application, but it does not correct unsafe queries, weak recovery flows, or missing permission checks. Employees, contractors, compromised accounts, and connected services may still reach vulnerable functions. Review the application's actual users and trust boundaries before deciding which tests apply. For internal applications, confirm that the testing environment and accounts represent those access paths rather than relying on an internet-facing scan.

Does every missing security header need an urgent fix?
+

No single header finding establishes urgency by itself. Determine which browser protection is missing, whether an exploitable condition exists, and what other controls apply. For example, Content Security Policy can limit some XSS consequences, but adding it does not replace safe rendering. Assign the finding a context-based priority and test the proposed header against legitimate application behavior. Record the reasoning when accepting residual risk rather than dismissing all header findings together.

Does HTTPS prevent SQL injection or XSS?
+

HTTPS protects the transport connection; it does not control how the application interprets input after receiving it. A malicious request can travel over an encrypted connection and still reach an unsafe query or rendering operation. Use parameter binding for database values and context-appropriate rendering defenses for browser content. Keep HTTPS in place as a separate control, and test application behavior independently of whether the browser displays a secure connection indicator.

Should a dependency alert automatically block a release?
+

Set release rules around verified risk and the application's requirements. A dependency alert warrants checking the deployed version, relevant configuration, affected functionality, and available fix. Define which conditions require a stop, who can approve an exception, and when that exception expires. Broadly blocking every alert can obscure the decisions that matter; ignoring alerts because exploitation has not been demonstrated also leaves risk unmanaged. Preserve the evidence behind either decision for review.

Does a clean scan mean the application is secure?
+

A clean scan means the tool reported no findings within the checks and routes it completed. It cannot establish that unvisited functions, other roles, or application-specific business rules are safe. Review coverage and confirm that authentication worked before interpreting the result. Use manual checks for important permission boundaries and workflows, and repeat relevant tests after changes. Treat the report as evidence about a defined assessment rather than a certificate of security.

5.0

based on 1 rating

Related articles
What Is a Website Vulnerability
Aleksandr Melnichuk・13 min read
Web Application Security
Web Application Vulnerability Scanning
Topscan Team・6 min read
Web Application Security