const express = require('express');
const mysql = require('mysql2');
const app = express();
app.use(express.json());
const connection = mysql.createConnection({
host: 'localhost',
user: 'app_user',
database: 'myapp'
});
// SECURE: Use ? placeholders instead of template literals
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
const query = 'SELECT * FROM users WHERE id = ?';
connection.query(query, [userId], (err, results) => {
res.json(results);
});
});
// SECURE: Use ? placeholders instead of concatenation
app.post('/login', (req, res) => {
const { username, password } = req.body;
const sql = 'SELECT * FROM users WHERE username = ? AND password = ?';
connection.query(sql, [username, password], (err, results) => {
res.json(results);
});
});
// SECURE: Build params array for dynamic queries
app.get('/search', (req, res) => {
const { name, department } = req.query;
const params = [];
let sql = "SELECT * FROM users WHERE 1=1";
if (name) {
sql += " AND name LIKE ?";
params.push('%' + name + '%');
}
if (department) {
sql += " AND department = ?";
params.push(department);
}
connection.query(sql, params, (err, results) => {
res.json(results);
});
});