Replies: 4 comments 1 reply
-
++Clarifications Needed for Effective ImplementationBased on my experience working with development teams, I believe the following statements need further clarification, as developers may either misunderstand them or overlook important details. 1.2.2: Dynamically Building URLsThe Statement: Verify that when dynamically building URLs, untrusted data is encoded according to its context... Ensure that only safe URL protocols are permitted (e.g., disallow javascript: or data:). 1.2.5: OS Command InjectionThe Statement: Verify that the application protects against OS command injection and that operating system calls use parameterized OS queries or use contextual command line output encoding. I would be happy to draft a pull request if submitted suggestions are aligned with OWASP ASVS team. |
Beta Was this translation helpful? Give feedback.
-
We do not duplicate general requirements for each technology or functionality, and it is specifically mentioned in the related chapter text:
We have a requirement
No, this requirement only covers building a URL; open redirect is a topic for validation. We have a requirement for this:
For me, this is the cheat sheet area already. |
Beta Was this translation helpful? Give feedback.
-
Thank you for your feedback and for highlighting the intent to avoid duplication in the ASVS. I’d like to respectfully note that I have already reviewed the dedicated GraphQL section (Section 4.3) before submitting my comments. As it's mentioned, this section addresses important GraphQL-specific risks—specifically query depth/cost limiting (4.3.1) and production introspection (4.3.2). However, my concern is that critical controls such as input validation and field-level authorization at the resolver level are not explicitly covered in the current GraphQL requirements. In practice, these two areas are the root cause of many GraphQL vulnerabilities observed in mature enterprise applications, even when other ASVS controls are followed. To be transparent, I was initially unsure whether to raise the GraphQL injection point under the general injection section or within the GraphQL-specific section, but decided to submit it here for team feedback and further suggestion. Would the team consider enhancing Section 4.3 to explicitly require:
Addressing these points would help bridge the gap between general API security and the unique risks associated with GraphQL.
Thank you for referencing 1.3.7. I appreciate that it addresses template injection in general and mentions the importance of avoiding untrusted input during template creation. but for Server-Side Template Injection (SSTI), the issue is not just whether input is sanitized — it’s how template engines interpret that input. Many SSTI exploits involve valid-looking input that passes validation, but still leads to code execution due to unsafe rendering logic or lack of sandboxing. Would the team consider explicitly naming SSTI, and adding guidance on:
I completely agree—string concatenation is not inherently insecure. The key issue is when untrusted input is used within concatenated strings that construct query structure. However, this is exactly the kind of subtlety that many developers miss. In real-world audits, we often find developers using ORMs or Entity Frameworks but still:
While the existing ASVS 1.2.4 statement is strong, it may be misinterpreted to mean that simply “using an ORM or parameterized query” is sufficient. My suggestion is to add a clarifying sentence to protect against this misinterpretation, such as: |
Beta Was this translation helpful? Give feedback.
-
The discussion format is not really followable here. Please open a separate issue per requirement. Before doing so, please read about the scope of ASVS and keeping in mind that:
In every issue, it must be clear what is the precise problem to solve for the current requirement. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
From an architectural standpoint, the following areas represent significant risks in modern enterprise applications but are not explicitly addressed in the current ASVS section:
GrapQL Injection
Modern APIs increasingly rely on GraphQL, yet the ASVS lacks specific guidance for securing them.
Recommendation: Verify that GraphQL resolvers implement strict input validation, enforce field-level authorization, and disable introspection queries in production to minimize the attack surface.
Server-Side Template Injection
No mention of SSTI (Server-Side Template Injection) in templating engines.
Recommendation: Verify that user input is not directly passed to template rendering engines (e.g., Jinja2, Handlebars, Thymeleaf) without context-aware escaping or sandboxing enabled.
Clarifications Needed for Effective Implementation
Certain ASVS statements, while technically sound, require additional explanation to ensure correct implementation by developers.
1.2.4: Database Queries
The Statement: "Verify that data selection or database queries (e.g., SQL, HQL, NoSQL, Cypher) use parameterized queries, ORMs, entity frameworks, or are otherwise protected from SQL Injection..."
Why it needs explanation: This rule is excellent, but developers often assume that simply using an ORM makes them immune. They fail to understand that injecting user input into methods that construct the query structure itself reintroduces SQL injection.
Recommendation: The explanation should explicitly state: " Verify that data selection or database queries avoid raw queries with string concationation. Using an ORM or Entity Framework does not automatically prevent all injection. Verify that user-controlled data is only used as parameters within the query and never to dynamically construct or alter the structure of the query itself, such as table names, column names, or logical operators."
I would be happy to know the feedback from OWASP ASVS team.
Beta Was this translation helpful? Give feedback.
All reactions