To properly document a false positive for SOQL injection where user input only controls the fields list, follow these steps:
1. **Description of the Issue**: Clearly explain the context, specifying that user input controls the fields list and not the WHERE clause, and how this is handled in the code.
2. **Mitigation Measures**: Provide evidence of safeguards, such as:
- Using `Schema.getGlobalDescribe()` to whitelist acceptable field names.
- Employing input sanitization methods like `String.escapeSingleQuotes()` or bind variables where applicable.
3. **Code Example**: Include a code snippet showing how user input is validated and sanitized before being used in the query.
4. **Justification for False Positive**: Explain why the flagged issue is not a security risk, confirming that input validation ensures only authorized fields are queried without unauthorized access or data exposure.
5. **Supporting Documentation**: Reference guidelines like Salesforce's Secure Coding Practices to back your approach.
6. **Request for Review**: Ask the security review team to assess the provided details and confirm the false positive status.
Make sure your documentation is clear, professional, and includes all necessary evidence to support your claim.