Files
hostingdelsur.net/src/forms
Mauri a6ca849630 fix: ocultar testimonios, horario 10-18, quitar precio técnico, fix toggle inglés
- Ocultar sección de testimonios en la home (Working on it hasta tener contenido real)
- Cambiar horario comercial de 9-18 a 10-18 hs UYT
- Quitar 'Técnico: USD X' y 'X USD/MB' de la web (Mauri pidió sacarlo)
- Crear /en/index.astro que faltaba — el toggle inglés daba 403 porque no había index.html en /en/
2026-06-09 06:50:59 -03:00
..

Contact Form — PHP endpoint

Este endpoint vive en server1 y procesa los envíos del formulario de /contacto.

⚠️ NO se deploya con Astro. Es solo template.

Setup en server1 (Netcup, cPanel)

1. Crear cuenta de correo dedicada

En cPanel → Email Accounts, crear:

  • Email: no-reply@hostingdelsur.net (Mauri confirma que ya existe)
  • Password: contraseña fuerte (mínimo 16 caracteres, símbolos, números)
  • Quota: 1 GB (solo se usa para SMTP, no recibe correo)

2. Crear archivo de credenciales

El archivo se crea en /home/hostingdelsur/.smtp-credentials.json (NO en public_html/, por seguridad).

Contenido (reemplazar PEGAR_AQUI con la password real):

{
  "host": "localhost",
  "port": 465,
  "username": "no-reply@hostingdelsur.net",
  "password": "PEGAR_AQUI",
  "encryption": "ssl",
  "from": "no-reply@hostingdelsur.net",
  "fromName": "Hosting del Sur - Web",
  "to": "contacto@hostingdelsur.net"
}

Por SSH:

chmod 600 /home/hostingdelsur/.smtp-credentials.json
chown hostingdelsur:hostingdelsur /home/hostingdelsur/.smtp-credentials.json

3. Subir PHPMailer (ya subido en este deploy)

# Ya ejecutado durante el deploy:
mkdir -p /home/hostingd/private/PHPMailer
# 3 archivos copiados: Exception.php, PHPMailer.php, SMTP.php
chmod 640 /home/hostingd/private/PHPMailer/*.php
chown -R hostingdelsur:hostingdelsur /home/hostingd/private

4. Subir el endpoint (ya subido)

/home/hostingd/public_html/api/contact.php
/home/hostingd/public_html/api/.htaccess

El .htaccess deniega todo excepto POST al endpoint. Ya configurado.

5. Variables de entorno opcionales (reCAPTCHA secret)

Para activar validación reCAPTCHA v3 server-side, agregar en el .htaccess o php.ini del server:

# SetEnv RECAPTCHA_SECRET "6LeOxaEaAAAAAM5OODBE2p9bknosuxpW7Gg17fKG"

O en cPanel → MultiPHP INI Editor:

env[RECAPTCHA_SECRET] = "6LeOxaEaAAAAAM5OODBE2p9bknosuxpW7Gg17fKG"

6. Test

curl -X POST https://hostingdelsur.net/api/contact.php \
  -d "name=Test&[email protected]&message=Hola&lang=es"

Debe devolver {"ok":true}. Sin reCAPTCHA token primero, con token después.

Seguridad implementada

  • Credenciales fuera de public_html/ (en ~/)
  • Permisos chmod 600 (solo el usuario puede leer)
  • Honeypot (website field) anti-bot
  • Validación y sanitización de inputs
  • Reply-To con email del visitante para responder
  • From con la cuenta dedicada (no spoofing)
  • TLS obligatorio (puerto 465 + ssl)
  • Rate limit básico por IP (3 envíos/hora) vía apcu_fetch/store
  • Headers anti-cache y anti-sniff
  • Mensaje de error genérico (no expone detalles internos)
  • reCAPTCHA v3 invisible (con score ≥ 0.3) si se configura RECAPTCHA_SECRET

Pendiente

  • Mauri debe re-enviar la password de no-reply@ (Mauri la puso en chat originalmente; el deploy la borró del servidor)
  • Mauri debe crear el archivo ~/.smtp-credentials.json con la password real
  • (Opcional) Configurar RECAPTCHA_SECRET en el environment del server