Defensive Coding

V15.3.1

Verify that the application only returns the required subset of fields from a data object. For example, it should not return an entire data object, as some individual fields should not be accessible to users.

Required for Level 1, 2 and 3

CAPEC™ (3.9): 122, 137, 212, 261, 28, 58

V15.3.2

Verify that where the application backend makes calls to external URLs, it is configured to not follow redirects unless it is intended functionality.

Required for Level 2 and 3

CAPEC™ (3.9): 137, 154, 19, 240, 261, 28, 481

V15.3.3

Verify that the application has countermeasures to protect against mass assignment attacks by limiting allowed fields per controller and action, e.g., it is not possible to insert or update a field value when it was not intended to be part of that action.

Required for Level 2 and 3

CAPEC™ (3.9): 113, 130, 137, 162, 19, 212, 261, 28

V15.3.4

Verify that all proxying and middleware components transfer the user's original IP address correctly using trusted data fields that cannot be manipulated by the end user, and the application and web server use this correct value for logging and security decisions such as rate limiting, taking into account that even the original IP address may not be reliable due to dynamic IPs, VPNs, or corporate firewalls.

Required for Level 2 and 3

CAPEC™ (3.9): 113, 137, 28

V15.3.5

Verify that the application explicitly ensures that variables are of the correct type and performs strict equality and comparator operations. This is to avoid type juggling or type confusion vulnerabilities caused by the application code making an assumption about a variable type.

Required for Level 2 and 3

CAPEC™ (3.9): 137, 152, 153, 160, 19, 261, 267, 28

V15.3.6

Verify that JavaScript code is written in a way that prevents prototype pollution, for example, by using Set() or Map() instead of object literals.

Required for Level 2 and 3

CAPEC™ (3.9): 137, 152, 153, 160, 19, 261, 267, 28

V15.3.7

Verify that the application has defenses against HTTP parameter pollution attacks, particularly if the application framework makes no distinction about the source of request parameters (query string, body parameters, cookies, or header fields).

Required for Level 2 and 3

CAPEC™ (3.9): 113, 137, 162, 19, 261, 28, 39

Disclaimer

Credit via OWASP ASVS.For more information visit: The OWASP ASVS Project or Github respository.. OWASP ASVS is under the Creative Commons Attribution-Share Alike v4.0 license.

Github logo View source on GitHub

OWASP Cornucopia

OWASP Cornucopia is a mechanism in the form of a card game to assist software development teams identify security requirements in Agile, conventional and formal development processes. It is language, platform and technology-agnostic, and is free to use. OWASP Cornucopia is licensed under the Creative Commons Attribution-ShareAlike 4.0 license, so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar licence to this one.

© 2012-2025 OWASP Foundation. The Open Worldwide Application Security Project (OWASP) is a nonprofit foundation that works to improve the security of software.