a6ca849630
- 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/
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 (
websitefield) anti-bot - ✅ Validación y sanitización de inputs
- ✅
Reply-Tocon email del visitante para responder - ✅
Fromcon 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.jsoncon la password real - (Opcional) Configurar
RECAPTCHA_SECRETen el environment del server