DEV Community

zeroprotocol-sec
zeroprotocol-sec

Posted on • Originally published at zeroprotocolcyber.substack.com

Web Application Functionality

Web Application Functionality: Understanding How Web Apps Work

When you open a website, you only see the interface in your browser. Behind that interface, a lot more is happening.

The browser sends HTTP requests, the server processes them, application logic makes decisions, databases provide data, and finally a response is returned to the browser.

For anyone learning web application security, understanding this flow is extremely important. Before looking for vulnerabilities, you need to understand where data comes from, how it is processed, and where security decisions are made.

In this guide, we'll look at:

  • Server-side and client-side functionality
  • Static vs dynamic content
  • Different sources of HTTP input
  • Common backend technologies
  • Dependencies and third-party components
  • A security-focused way of thinking about web applications

Client-Side vs Server-Side Functionality

Web applications generally involve two major areas: the client and the server.

Server-Side Functionality

Server-side code runs on the server and is responsible for things such as:

  • Processing HTTP requests
  • Applying business logic
  • Checking authentication and authorization
  • Reading and modifying database records
  • Communicating with other backend services
  • Generating responses

A simplified flow is:

Browser
   ↓
HTTP Request
   ↓
Web Server
   ↓
Application Logic
   ↓
Database / Backend Services
   ↓
HTTP Response
   ↓
Browser
Enter fullscreen mode Exit fullscreen mode

From a security perspective, the server is particularly important because sensitive operations such as authentication, authorization, and data access are normally handled there.

Client-Side Functionality

Client-side functionality runs inside the user's browser.

The most common technologies are:

  • HTML → page structure
  • CSS → presentation
  • JavaScript → behavior and interaction

For example, JavaScript might validate a form, update part of a page without refreshing it, or make an API request.

However, client-side checks should never be treated as the final security control.

Anything running inside the browser can potentially be modified by the user.


Static and Dynamic Web Content

Not every web resource requires server-side application logic.

Static Content

A static resource is generally returned as it exists on the server.

For example:

/index.html
/about.html
/images/logo.png
/styles/main.css
Enter fullscreen mode Exit fullscreen mode

If two users request the same static file, they will generally receive the same content.

For example:

GET /about.html
Enter fullscreen mode Exit fullscreen mode

The server can simply return the requested file.

Dynamic Content

Dynamic applications generate responses based on information available during the request.

For example:

GET /profile?id=123
Enter fullscreen mode Exit fullscreen mode

The application might:

  1. Read the id
  2. Find the corresponding account
  3. Check whether the requester is allowed to access it
  4. Retrieve data from the database
  5. Generate the response

The result may be different for another user or another request.

HTTP Request
      ↓
Read Input
      ↓
Application Logic
      ↓
Database / Services
      ↓
Generate Response
Enter fullscreen mode Exit fullscreen mode

This is one reason input handling is so important in web security.


Where Does Web Application Input Come From?

A useful security habit is to treat the entire HTTP request as potential input.

Developers don't only receive input through HTML forms. Data can come from URLs, headers, cookies, request bodies, and other parts of a request.


Query Parameters

Query parameters appear after ? in a URL.

Example:

GET /search?q=laptop
Enter fullscreen mode Exit fullscreen mode

Here:

q = laptop
Enter fullscreen mode Exit fullscreen mode

Another example:

GET /product?id=25
Enter fullscreen mode Exit fullscreen mode

The application may use id=25 to determine which product should be displayed.

From a security-testing perspective, parameters are interesting because their values can be changed by the client.


Path Parameters

Some applications place identifiers directly inside the URL path.

Examples:

/user/123
/product/25
/order/9001
Enter fullscreen mode Exit fullscreen mode

An API might interpret:

/product/25
Enter fullscreen mode Exit fullscreen mode

as a request for product number 25.

These identifiers are particularly interesting when testing access control, because the application needs to verify that the current user is actually allowed to access the requested object.


Cookies

Cookies are automatically sent by the browser with matching requests.

Example:

Cookie: session=abc123
Enter fullscreen mode Exit fullscreen mode

Applications commonly use cookies for:

  • Session management
  • Authentication state
  • Preferences
  • Tracking
  • Personalization

A simplified concept is:

Browser
   ↓
Session Cookie
   ↓
Server
   ↓
Identify User / Session
Enter fullscreen mode Exit fullscreen mode

Because session cookies can represent an authenticated session, their handling is an important security concern.


Request Body

Data can also be sent inside the HTTP request body.

A traditional form might send:

POST /login
Content-Type: application/x-www-form-urlencoded

username=alice&password=test123
Enter fullscreen mode Exit fullscreen mode

Modern APIs frequently use JSON:

POST /api/login
Content-Type: application/json

{
  "username": "alice",
  "password": "test123"
}
Enter fullscreen mode Exit fullscreen mode

Request bodies can contain important application data such as:

  • Login credentials
  • Profile information
  • Product details
  • Account settings
  • Object identifiers
  • API parameters

The server therefore needs to validate and authorize this data properly.


HTTP Headers

Headers are another possible source of application input.

For example:

User-Agent: Firefox
Enter fullscreen mode Exit fullscreen mode

Applications may use headers for different purposes, including:

  • Content negotiation
  • Client identification
  • Authentication
  • Tracing
  • Application-specific behavior

The important security concept is simple:

Don't assume that information received from the client is trustworthy just because it came from a header.


Think About the Whole Request

Instead of focusing only on form fields, look at the complete HTTP request:

HTTP Request
│
├── Method
├── URL / Path
├── Query Parameters
├── Headers
├── Cookies
└── Body
       ↓
Application
       ↓
Processing / Validation
       ↓
HTTP Response
Enter fullscreen mode Exit fullscreen mode

This mindset becomes extremely useful when analyzing applications with tools such as Burp Suite.


Technologies Behind Web Applications

A modern web application usually consists of several technology layers rather than a single technology.

Server-Side Languages

Application logic can be written using languages such as:

  • PHP
  • Python
  • Java
  • C#
  • Ruby
  • JavaScript / TypeScript

The language itself doesn't determine whether an application is secure. The way developers implement the application matters much more.


Frameworks and Platforms

Developers commonly use frameworks and platforms to build applications faster.

Examples include:

  • ASP.NET
  • Spring
  • Django
  • Laravel
  • Express
  • Ruby on Rails

Frameworks provide reusable functionality, libraries, routing, authentication mechanisms, database integrations, and other features.


Web Servers

Web servers handle HTTP communication and can serve static resources or forward requests to application components.

Common examples include:

  • Apache
  • Nginx
  • IIS

A simplified architecture could look like:

Client
  ↓
Web Server
  ↓
Application
  ↓
Database
Enter fullscreen mode Exit fullscreen mode

Databases

Applications frequently store information in databases.

Examples include:

  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • MongoDB

Databases may contain:

  • User accounts
  • Orders
  • Products
  • Application configuration
  • Business data

The application usually communicates with the database rather than allowing the browser to access it directly.


Other Backend Services

A web application can also communicate with many other systems.

For example:

                  Web Application
                         │
        ┌────────────────┼────────────────┐
        ↓                ↓                ↓
    Database       File Storage       External API
                         │
                    Other Services
Enter fullscreen mode Exit fullscreen mode

These may include:

  • File storage
  • LDAP / Active Directory
  • Payment providers
  • Email services
  • SMS services
  • Internal APIs
  • Microservices
  • Message queues

This means the application's attack surface can extend beyond the main web server.


5. Don't Assume a Framework Makes an Application Secure

Using a popular framework does not automatically make an application secure.

Frameworks can provide safer defaults and help developers avoid certain mistakes, but developers can still introduce vulnerabilities through poor application logic.

For example:

Secure Framework
       +
Incorrect Authorization
       ↓
Potentially Vulnerable Application
Enter fullscreen mode Exit fullscreen mode

Common problems can come from:

  • Missing authorization checks
  • Incorrect business logic
  • Unsafe configuration
  • Poor input validation
  • Insecure API design
  • Vulnerable dependencies

A framework is a tool—not a guarantee of security.


Third-Party Dependencies

Modern applications rarely consist entirely of custom code.

A project might look like:

Application
│
├── Framework
├── Authentication Library
├── Database Driver
├── Logging Package
├── Utility Libraries
└── Custom Application Code
Enter fullscreen mode Exit fullscreen mode

Each additional dependency introduces another component that may need to be maintained and updated.

A vulnerable dependency can potentially introduce security issues into applications that use it.

A useful assessment process is:

Identify Technology
       ↓
Determine Version
       ↓
Check Known Vulnerabilities
       ↓
Understand How It Is Used
       ↓
Verify Actual Impact
Enter fullscreen mode Exit fullscreen mode

However, finding an old or vulnerable-looking component doesn't automatically prove that the application is exploitable.

The installed version, configuration, reachable functionality, and actual usage all matter.


A Security Mindset for Web Applications

When analyzing an application, don't focus only on identifying technologies.

Instead, ask questions such as:

  • Where does this value come from?
  • Can the client modify it?
  • Where does the server use it?
  • Is it validated?
  • Is authorization checked?
  • Does it affect database queries?
  • Does it change application behavior?
  • Does it access another backend service?
  • What happens when an unexpected value is supplied?

For example:

User Input
    ↓
HTTP Request
    ↓
Application
    ↓
Validation
    ↓
Authorization
    ↓
Business Logic
    ↓
Database / Service
    ↓
Response
Enter fullscreen mode Exit fullscreen mode

Every stage represents a place where incorrect assumptions or implementation mistakes can create security problems.


Final Takeaway

A web application is much more than the webpage displayed in your browser.

At a high level:

Browser
   ↓
HTTP Request
   ↓
Web Server
   ↓
Application
   ↓
Business Logic
   ↓
Database / APIs / Services
   ↓
HTTP Response
   ↓
Browser
Enter fullscreen mode Exit fullscreen mode

For web security, knowing whether an application uses PHP, Java, Python, Apache, or MySQL is useful—but technology identification is only the beginning.

The more important question is:

How does the application receive my input, process it, make security decisions, and use the resulting data?

Understanding that flow gives you a much stronger foundation for identifying security weaknesses.

Top comments (2)

Collapse
 
zeroprotocol-sec profile image
zeroprotocol-sec

please give any suggestion

Collapse
 
zeroprotocol-sec profile image
zeroprotocol-sec

Thankyou for reading ❤️❤️❤️