OWASP Security

OWASP is abbreviation for Open Web Application Security Project.

The OWASP Top Ten represents a broad consensus about what the most critical web application security flaws are.

  • TOC

    {:toc}

1. SQL Injection

Reason

  • Targets the back-end data stores via URL, forms, login boxes

Defense

  • The best defense against SQL injection is use parameterized queries (prepared statements) for SQL queries within the code

  • No detailed database error message returned directly

  • Validate the input data before constructing SQL

2. Session hijacking

Reason

  • Network packet captured, SessionID being used, hijacker treated as user

Defense

  • Encryption of the site over HTTPS will help prevent session tokens from being stolen

  • Sensitive sites consider not only authentication but also the entire sites: Use SSL, HTTPS

  • Shorter idle timeouts

  • Help those who forgot to logout

  • Harder for hijackers to act

3. Cross-site Scripting (XSS)

Reason

  • User supplied input is properly escaped, or not verify it to be safe via input validation

Defense

  • Use proper re-encoding before redisplaying user input

  • Properly escape all untrusted data based on the HTML context

  • Positive or “whitelist” input validation

  • Auto-sanitization libraries

  • Content Security Policy (CSP)

4. Parameter Manipulation (insecure direct object reference)

Reason

  • Parameter values contained inside a URL being modified get different functionality or data

Defense

  • Server-side validation

  • Central validation scheme

  • Independent business logic

  • Session variables

  • Storing data in session variables, no parameters in the URL to be tampered with

5. Insecure Configuration

Reason

  • Lack of standard hardening process for deployed infrastructure and software

  • No central account management mechanism in place on each server

  • No standardized and central process for patch management

Defense

  • Repeatable Hardening process

  • New server, repeatable hardening scripts

  • Patch Management

  • Regular Updates and Audits

6. Insecure Storage

Reason

  • Sensitive data may be disclosed to unauthorized party

Defense

  • Determine what’s sensitive

  • Thread Modeling

  • Use known strong algorithms

  • Hashing

  • Use >=168bits, e.g. SHA-256, instead of MD5, SH0, SH1

7. Forcible Browsing

Reason

  • Access by “guessing” the URL

Defense

  • Page Level Authorization

  • Each page checks to see if the user is authorized to have access

  • Programmed Authorization

  • Code and programming to determine a user’s authorization, includes coding roles and access policies

8. Cross-site request forgery (XSRF)

Reason

  • Victim must be authenticated

  • Hacker must be able to make a XSRF URL, attack is blind

Defense

  • Decrease session timeouts

  • XSRF tokens, adding a secret, not automatically submitted, token to ALL sensitive requests

  • Server generates a token on each page load and stores it, when submits the form, it check if the token matches

  • Re-authentication

  • Asking user to re-authenticate before a sensitive transaction is a good way to verify the user and their intended actions

9. Vulnerable Components

Reason

  • Vulnerable components are common, virtually every app has these issues; development team not enforcing components/libraries up-to-date

Defense

  • Automation checks periodically to check if libraries out-of-date

10. Unchecked Redirects

  • URL redirects exploited by hacker

Defense

  • Don’t use parameters (in URL), manage re-direction in code such as session data

  • Server side validation, check redirect URLs, use a whitelist

Reference

Last updated