393f6b0dc3
- Arista Pro Alternate Regular self-hosted (font corporativa) - Toggle theme con CSS variables y @custom-variant dark - 6 servicios en 3 categorías (Hosting & Correo / Diseño & Contenido / Infraestructura) - 3 planes destacados (Básico USD 59, Institucional USD 129, E-commerce USD 219) - Datacenters en 4 países (Canadá, USA, Alemania, Uruguay) sin ciudades en el sitio - Sede operativa en Maldonado, Uruguay - i18n es/en con contenido duplicado en Keystatic - Endpoint PHP para form de contacto con PHPMailer + reCAPTCHA v3 + honeypot + rate limit - WorldMap con animación SVG de los 4 países - 29 páginas generadas, 0 JS por default - Sitemap auto + robots.txt - JSON-LD Organization + ProfessionalService con areaServed
3.1 KiB
3.1 KiB
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