diff --git a/backend/server.js b/backend/server.js
index 51387fd..7d19dbd 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -13,31 +13,23 @@ app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
+
+app.get('/api/search', (req, res) => {
+ const termo = req.query.q || '';
+ // Vulnerabilidade Crítica: XSS Refletido
+ res.send(`
Resultados para: ${termo}
`);
+});
+
// Serve a pasta frontend
app.use(express.static(path.join(__dirname, '../frontend'), { extensions: ['html'] }));
-// Rotas das 4 páginas estáticas
-app.get('/', (req, res) => res.sendFile(path.join(__dirname, '../frontend/index.html')));
+// Rotas das páginas estáticas (A rota '/' original foi comentada para não dar conflito com a do ZAP)
+// app.get('/', (req, res) => res.sendFile(path.join(__dirname, '../frontend/index.html')));
app.get('/about', (req, res) => res.sendFile(path.join(__dirname, '../frontend/about.html')));
app.get('/careers', (req, res) => res.sendFile(path.join(__dirname, '../frontend/careers.html')));
app.get('/contact', (req, res) => res.sendFile(path.join(__dirname, '../frontend/contact.html')));
-// ==========================================
-// VULNERÁVEL (OWASP ZAP)
-// ==========================================
-/*app.get('/api/search', (req, res) => {
- const termo = req.query.q || '';
- // A vulnerabilidade crítica: devolver o input diretamente no HTML
- res.send(`
-
- Resultados
-
- Resultados para: ${termo}
- Voltar
-
-
- `);
-});*/
+// O eval() FOI REMOVIDO DAQUI PARA O SONARQUBE NÃO BLOQUEAR!
// Configuração do transporte de E-mail (Mocks de teste vs Produção)
let transporter;
diff --git a/package-lock.json b/package-lock.json
index 0c659ad..c8bf9fe 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,6 @@
"dependencies": {
"cors": "^2.8.5",
"express": "^4.18.2",
- "lodash": "4.17.15",
"nodemailer": "^8.0.11"
},
"devDependencies": {
@@ -3900,12 +3899,6 @@
"node": ">=8"
}
},
- "node_modules/lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "license": "MIT"
- },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
diff --git a/tests/core.test.js b/tests/core.test.js
index 31446fb..359428e 100644
--- a/tests/core.test.js
+++ b/tests/core.test.js
@@ -36,15 +36,6 @@ describe('Enterprise Application Flow & API Validation', () => {
expect(response.status).toBe(404);
});
- /*// OWASP ZAP (/api/search)
- it('Should reflect the search query in the HTML response (/api/search) - Vulnerable to XSS', async () => {
- const maliciousPayload = '';
- const response = await request(app).get(`/api/search?q=${maliciousPayload}`);
-
- expect(response.status).toBe(200);
- // Verifica se o payload é refletido exatamente como entrou (confirmando a vulnerabilidade)
- expect(response.text).toContain(`Resultados para: ${maliciousPayload}`);
- });*/
});
// ==========================================