When database access isn't possible, SQL injection findings can be evaluated by focusing on the following:
1. **Input Validation and Sanitization**: Ensure all parameters passed to public methods with database operations are sanitized. Use methods like `String.escapeSingleQuotes()` for user inputs.
2. **Use Secure Query Patterns**: Avoid string concatenation in dynamic SOQL/SOSL queries. Instead, use `sObjectType` or `sObjectFields` to construct queries securely.
3. **Perform CRUD/FLS Checks**: Validate user permissions for objects and fields before executing queries.
4. **Manual Review**: If findings are flagged by automated tools, manually review the code to confirm whether they are false positives.
5. **Document Findings**: If findings are false positives, document the review process and results in a false positive report.
These steps help ensure that the code is secure, even without direct database access. A SQL Injection finding for a web application that does not directly access a database usually points to a potential vulnerability in how the application processes user input. Even if the app doesn't interact with a database, it might pass user-supplied data to other systems or services that could be vulnerable to injection attacks. This highlights the importance of sanitizing and validating all user inputs to prevent unintended behavior or security risks in downstream systems.