fix(security): CRLF injection en campos opcionales + XSS en rtbfUrl — VULN: Header injection

Vulnerabilidades corregidas:
- CRLF injection: los campos nickname/phone/address/extra aceptaban \r\n
  que podían manipular el cuerpo del email o, en implementaciones futuras,
  filtrar hacia cabeceras MIME. sanitizeField() elimina todos los chars
  de control (\r \n \t \x00-\x1F) sustituyéndolos por espacio.
- XSS reflejado (latente): rtbfUrl se interpolaba en innerHTML sin
  escapar con esc(). Aunque rtbfLink() devuelve URLs hardcodeadas,
  cualquier refactor futuro que usase datos del usuario habría sido
  explotable. Ahora siempre pasa por esc().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hacklab 2026-04-07 17:25:12 +02:00
parent 02360927ff
commit fa4a38bb9a
2 changed files with 15 additions and 6 deletions

View file

@ -809,7 +809,7 @@ function renderResults(results) {
<a class="result-action result-action--visit" href="${esc(r.url)}" target="_blank" rel="noopener noreferrer">
Ver página
</a>
${rtbfUrl ? `<a class="result-action result-action--rtbf" href="${rtbfUrl}" target="_blank" rel="noopener noreferrer">
${rtbfUrl ? `<a class="result-action result-action--rtbf" href="${esc(rtbfUrl)}" target="_blank" rel="noopener noreferrer">
Solicitar eliminación
</a>` : ''}
<a class="result-action result-action--gdpr" href="plantillas.html" target="_blank">