Documentación · Privacidad, seguridad y cumplimiento
Recomendaciones de seguridad
Este documento recopila recomendaciones prácticas de seguridad para sitios que ejecutan el plugin ADP Car Market Hub. Se centra en el bastionado operativo, las protecciones integradas del plugin y los controles que los operadores del sitio deben configurar además del bastionado estándar de WordPress.
Este documento no sustituye a una auditoría de seguridad completa y no garantiza que el sitio esté libre de vulnerabilidades. Los operadores del sitio deben revisar su configuración de hosting, la configuración de WordPress y las integraciones de terceros con un especialista en seguridad cualificado cuando sea necesario.
Cuándo utilizar este documento
Utilice este documento cuando necesite:
- Preparar un sitio que utiliza el plugin para su uso en producción.
- Revisar los controles de seguridad integrados del plugin.
- Planificar medidas de seguridad operativas (credenciales, cron, registro, copias de seguridad).
- Responder a una revisión o cuestionario de seguridad interna.
Descripción general
El plugin se basa en las primitivas de seguridad estándar de WordPress:
- Capacidades de WordPress (capacidad personalizada del plugin
manage_as24_importspara acciones de gestión; capacidades por CPT para las publicaciones de vehículos). - Nonces de WordPress en cada formulario de administración, acción AJAX y controlador POST de administración.
- Funciones auxiliares estándar de saneamiento y escape de WordPress
(
sanitize_*,wp_kses_post,esc_*,wp_unslash). - Transients de WordPress para estados de corta duración (límites de tasa, bloqueos de ejecución).
- El TLS existente del sitio, la protección de inicio de sesión, los permisos de archivos y la seguridad de la base de datos.
El plugin añade varias protecciones específicas de características sobre esas primitivas, que se enumeran en la siguiente sección.
Protecciones integradas
Los comportamientos a continuación reflejan lo que implementa el código del plugin hoy en día. Verifíquelos en la versión actual del plugin antes de confiar en ellos en documentación formal de seguridad.
Autenticación y autorización
- Las páginas de administración y los controladores POST comprueban la capacidad de gestión del plugin
(
manage_as24_imports) antes de procesar cualquier cambio de estado. - Los endpoints AJAX de administración en el plugin verifican un nonce a través de
check_ajax_referer. - Los envíos de formularios de administración utilizan
check_admin_referercon acciones de nonce específicas del formulario. - Las capacidades personalizadas se mapean para el tipo de contenido personalizado
as24ci_carconmap_meta_cap = true, por lo que los permisos por publicación siguen el mecanismo de meta-capacidades de WordPress.
Superficie de la API REST
- Las rutas REST públicas de vehículos (
/wp-json/as24ci/v1/vehiclesy/wp-json/as24ci/v1/vehicles/{id}) solo se registran cuando la opción Enable REST API está activada. Utilizan unpermission_callbackde__return_true, lo que significa que los datos que devuelven están destinados a ser públicos de solo lectura. Desactive la opción si no desea exponer esta superficie. - El endpoint de importación por cron (
/wp-json/as24ci/v1/cron-import) registra una ruta pública pero realiza una autenticación basada en token dentro de la función de devolución de llamada (callback). El token se compara conhash_equals(comparación en tiempo constante) y se requiere en cada llamada. - El token de cron se puede proporcionar como una cabecera
Authorization: Bearer(preferido: mantiene el token fuera de los registros de acceso) o como un parámetro de consulta?token=.
Token de cron
- El token de cron se gestiona desde los ajustes de importación del plugin y se
almacena en la opción
as24ci_cron_tokencomo un hash HMAC-SHA256 unidireccional, por lo que el texto plano no se puede recuperar de un volcado de la base de datos. El valor en texto plano solo está disponible en la interfaz de administración durante una breve ventana de visualización (alrededor de 15 minutos) inmediatamente después de que el token se genera o regenera; después de esa ventana, el administrador solo puede generar un nuevo token, no revelar el anterior. - El endpoint rechaza las solicitudes cuando no hay ningún token configurado.
Antiactividad maliciosa en formularios de contacto
- Cada envío debe llevar el nonce
as24ci_contact_form. - Un campo trampa (honeypot) oculto
websiterechaza silenciosamente los envíos automatizados sin producir un error visible. - Se aplica un límite de tasa de 5 envíos por IP cada 5 minutos a través de
un transient de WordPress. La dirección IP se cifra con un hash mediante
wp_salt('auth')antes de su uso y no se almacena con el lead. - El campo del mensaje se filtra con
wp_kses_post.
Tokens de alertas de búsqueda
- Cada suscripción tiene un token criptográficamente aleatorio de 64 caracteres utilizado tanto para el enlace de confirmación como para el enlace de cancelación de suscripción.
- La confirmación solo cambia el estado de una fila de
pendingaactive; los usos posteriores no vuelven a cambiar el estado.
Registrador y enmascaramiento de secretos
- El registrador (logger) del plugin escribe en un archivo dentro de un subdirectorio dedicado
de la carpeta de subidas WordPress (
as24ci-logs/). - Al crearse, el directorio se protege mediante un archivo
.htaccessque deniega todo acceso (solo Apache) y un archivo vacíoindex.php. - Antes de escribir cada línea, el mensaje se sanea para enmascarar
fragmentos de
token=…,client_secret=…yAuthorization: Bearer …(defensa en profundidad). - Los registros rotan a los 10 MB y los archivos rotados con más de 7 días de antigüedad se eliminan automáticamente.
- En servidores que no respetan
.htaccess(Nginx, Caddy, IIS), la exposición del directorio de subidas depende de la configuración del servidor web. Los operadores deben asegurarse de que el acceso directo awp-content/uploads/as24ci-logs/esté bloqueado en dichos servidores.
Datos al desinstalar
- Las tablas de analítica y de agentes de búsqueda se eliminan incondicionalmente al desinstalar, por lo que los datos de seguimiento de visitantes y las direcciones de correo electrónico de los suscriptores no persisten después de eliminar el plugin.
- El ajuste opcional Delete data on uninstall también elimina las publicaciones de vehículos, las publicaciones de leads, las páginas del plugin y los archivos adjuntos importados.
Acciones recomendadas para el operador
Las siguientes recomendaciones combinan el bastionado estándar de WordPress con la configuración específica del plugin.
Credenciales y secretos
- Trate el secreto de cliente de la API de AutoScout24 y el token de cron como
secretos confidenciales. Se almacenan como opciones de WordPress pero están
protegidos en reposo por el asistente de secretos centralizado del plugin: el
secreto de cliente se cifra con AES-256-GCM autenticado (clave
derivada de las sales de WordPress a través de HKDF-SHA256), y el token de
cron se almacena como un hash HMAC-SHA256 unidireccional para que el texto plano
no se pueda recuperar de un volcado de la base de datos. El bastionado estándar de la base de datos de
WordPress sigue aplicándose.
La clave de API de Gemini gestionada que utiliza el AI Assistant está configurada por
AD Promotion en
AS24CI\Ai_Configy no se almacena como una opción de WordPress ni se expone en la interfaz de administración. - Restrinja el acceso a la base de datos a los administradores y asegúrese de que
wp-config.phpno sea de lectura pública. - Rote el token de cron si hay alguna razón para sospechar que ha sido
expuesto (por ejemplo, a través de registros de acceso que registraron el
parámetro de consulta
?token=).
REST y endpoint de cron
- Desactive Enable REST API si no necesita exponer los endpoints públicos de vehículos.
- Al utilizar el endpoint de cron integrado, prefiera
Authorization: Bearer YOUR_TOKENen lugar de?token=…para que el secreto no aparezca en los registros de acceso del servidor web. - Utilice HTTPS para cualquier programador externo que llame al endpoint de cron.
- Prefiera un cron del sistema fiable que active WP-Cron en lugar del comportamiento de pseudo-cron predeterminado en sitios de producción.
Roles y capacidades
- Otorgue la capacidad
manage_as24_importssolo a usuarios de confianza. Por defecto, se añade al roladministrator. - Utilice el rol
as24ci_editordel plugin (o una configuración personalizada comparable) para el personal que solo necesita gestionar publicaciones de vehículos y no los ajustes del plugin. Consulte Control de acceso y capacidades.
Privacidad y analítica
- Mantenga la analítica desactivada hasta que tenga una base legal documentada o una integración de consentimiento implementada. Consulte Notas sobre RGPD / DSGVO y Notas sobre revDSG.
- Mantenga activada la opción Filter data minimization.
- Establezca la ventana de retención de analítica en el valor más bajo compatible con sus necesidades operativas (mínimo 7 días).
Formularios y gestión de leads
- Mantenga ocultos los campos opcionales (Teléfono, Mensaje) si no los necesita.
- Configure el destinatario del correo electrónico de notificación de leads y verifique que sea un buzón de correo controlado.
- Considere un plugin de SMTP y la alineación de SPF/DKIM/DMARC para reducir el riesgo de que los correos electrónicos de consulta se filtren como spam.
- Elimine periódicamente los leads que ya no sean necesarios para fines comerciales legítimos.
Característica de AI Assistant
- El AI Assistant utiliza la configuración gestionada de Google Gemini en ADP Car Market Hub. No se requiere selección de proveedor, selección de modelo ni introducción de clave de API en el backend de WordPress; el aprovisionamiento de IA específico del cliente lo completa AD Promotion después de la instalación. Las instrucciones (prompts) se envían al endpoint gestionado de Gemini a través de HTTPS.
- Restrinja quién puede configurar el AI Assistant limitando la
capacidad
manage_as24_imports. - Revise el procesamiento de datos aplicable y los términos contractuales para la configuración de IA gestionada antes de habilitar las funciones de IA en producción.
Sistema de archivos y subidas
- Verifique que el directorio de subidas de WordPress no permita el listado de directorios en su servidor web.
- En servidores que no sean Apache (Nginx, Caddy, IIS), confirme que
wp-content/uploads/as24ci-logs/no sea accesible públicamente. El plugin escribe un.htaccesspara protección en Apache; en otros servidores, los operadores deben añadir una regla equivalente. - Mantenga actualizados PHP, WordPress, los temas y otros plugins.
Copias de seguridad y respuesta ante incidentes
- Incluya la base de datos de WordPress en las copias de seguridad periódicas; esto captura las publicaciones de vehículos, los leads, la analítica y los datos de alertas de búsqueda.
- Pruebe la restauración de copias de seguridad periódicamente.
- Documente un plan de respuesta ante incidentes, que incluya cómo desactivar el endpoint de cron (borrar el token de cron) y revocar el secreto de cliente de la API. Para desactivar las funciones de IA, desactive el AI Assistant desde la pestaña de administración AI Assistant; la clave gestionada de Gemini es propiedad de AD Promotion y es rotada por ellos.
Paso a paso: lista de comprobación de seguridad previa a la producción
- Confirme que WordPress, el plugin y todos los demás plugins/temas estén en sus versiones estables actuales.
- Confirme que el sitio se sirve a través de HTTPS y que las sesiones de administración están restringidas a HTTPS.
- Revise la lista de usuarios y roles de WordPress. Elimine las cuentas no utilizadas.
- Confirme que solo los usuarios de confianza tienen la capacidad
manage_as24_imports. - Decida si se necesitan las rutas REST públicas. Desactive Enable REST API si no es así.
- Si se utiliza el endpoint de cron, genere un token de cron aleatorio largo
y llámelo a través de
Authorization: Bearer …sobre HTTPS. - Configure el correo electrónico del destinatario del formulario de leads y los ajustes de consentimiento.
- Revise los ajustes de analítica (desactivados por defecto; si están activados, configure la retención y la integración de consentimiento).
- Verifique que el directorio de registros no sea accesible públicamente en su servidor web.
- Realice una copia de seguridad de referencia antes de la puesta en marcha.
Resolución de problemas
- Los usuarios públicos pueden llamar a los controladores AJAX o POST de administración: compruebe que no esté ejecutando herramientas de depuración que omitan las capacidades; los controladores del plugin verifican tanto la capacidad como el nonce en cada solicitud.
- El endpoint de cron devuelve
403 Invalid or missing token: verifique que el token de cron esté configurado en la administración del plugin y que el remitente lo proporcione correctamente a través deAuthorization: Bearero?token=. - El endpoint de cron devuelve
403 Cron token not configured: abra los ajustes de importación del plugin y genere / configure el token de cron. - Los registros no rotan: confirme que el directorio de subidas tiene permisos de escritura y que WP-Cron se está ejecutando. La rotación se comprueba periódicamente (en la primera llamada y cada 100 llamadas posteriores).
- Aparecen valores confidenciales en los registros: el registrador enmascara los patrones conocidos. Si una integración personalizada registra secretos adicionales, actualice esa integración para enmascararlos en el origen.