Check for: - SQL injection vulnerabilities - XSS (Cross-Site Scripting)
## Code Review Summary ### 🔴 Critical (Must Fix) - **[File:Line]** [Issue description] - **Why:** [Explanation] - **Fix:** [Suggested fix] ### 🟡 Suggestions (Should Consider) - **[File:Line]** [Issue description] - **Why:** [Explanation] - **Fix:** [Suggested fix] ### 🟢 Nits (Optional) - **[File:Line]** [Minor suggestion] ### ✅ What's Good - [Positive feedback on good patterns]
// BAD: SQL injection const query = `SELECT * FROM users WHERE id = ${userId}`; // GOOD: Parameterized query const query = 'SELECT * FROM users WHERE id = $1'; await db.query(query, [userId]); `### Performance` // BAD: N+1 query users.forEach(async user => { const posts = await getPosts(user.id); }); // GOOD: Batch query const userIds = users.map(u => u.id); const posts = await getPostsForUsers(userIds); `### Error Handling` // BAD: Swallowing errors try { await riskyOperation(); } catch (e) {} // GOOD: Handle or propagate try { await riskyOperation(); } catch (e) { logger.error('Operation failed', { error: e }); throw new AppError('Operation failed', { cause: e }); }