Documentación · Documentación técnica
Seguridad y capacidades
Este documento describe el modelo de seguridad del plugin ADP Car Market Hub: qué capacidades y roles de WordPress introduce, cómo se protegen sus interfaces de administración y AJAX, y los principios que sigue para el manejo de entradas y solicitudes externas.
Cuándo utilizar este documento
Lea este documento si necesita:
- Decidir qué rol de WordPress asignar a un concesionario o editor de contenido.
- Auditar quién puede ver, editar, importar o cambiar los ajustes.
- Añadir un rol personalizado que deba ser capaz de gestionar los listados de vehículos sin ser un administrador completo.
- Verificar la postura de seguridad de las interfaces HTTP y AJAX del plugin.
Para obtener detalles sobre capacidades y nonces por endpoint, consulte REST API Endpoints y AJAX Actions.
Descripción general
El plugin superpone dos sistemas de capacidades independientes:
- Capacidades de CPT personalizadas para entradas de
as24ci_car(capacidades granulares de lectura/edición/publicación/eliminación). - Una capacidad de gestión para todo el plugin (
manage_as24_imports) que restringe el acceso a las páginas de administración del importador, los activadores de importación/cola, la purga de analíticas, el flujo de trabajo de leads y la administración del AI Assistant.
Se crea un rol dedicado, as24ci_editor ("AS24 Editor"), al realizar la
activación. Este recibe todas las capacidades de CPT pero no
manage_as24_imports, lo que le permite mantener los vehículos sin
tocar los ajustes del importador.
Referencia de capacidades
Capacidad de gestión del plugin
| Capacidad | Propósito |
|---|---|
manage_as24_imports | Requerida para las pestañas de administración del importador, activadores de importación/cola, asistente por lotes, actualizaciones del flujo de trabajo de leads, purga de analíticas, administración del AI Assistant y pestaña de soporte. Se otorga al rol administrator al activarse. |
Capacidades de tipos de contenido personalizados (as24ci_car)
El plugin mapea las siguientes capacidades meta y primitivas:
- Meta capacidades singulares:
read_as24ci_car,edit_as24ci_car,delete_as24ci_car. - Capacidades primitivas plurales:
read_private_as24ci_cars,edit_as24ci_cars,edit_others_as24ci_cars,edit_published_as24ci_cars,publish_as24ci_cars,delete_as24ci_cars,delete_others_as24ci_cars,delete_published_as24ci_cars.
Tanto al rol administrator como al rol as24ci_editor se les
otorgan todas las anteriores al activarse. El rol estándar de WordPress
editor no recibe estas capacidades por diseño.
Roles creados por el plugin
as24ci_editor— creado al activarse con la etiqueta AS24 Editor. Comienza con la capacidadready luego recibe todas las capacidades de CPT deas24ci_car. No recibemanage_as24_imports.administrator— recibe todas las capacidades de CPT deas24ci_carymanage_as24_imports. El rol en sí no es creado por el plugin (forma parte de WordPress).
La opción as24ci_caps_version registra la versión del esquema de
capacidades, lo que permite que futuras actualizaciones del plugin añadan nuevas capacidades a
los roles existentes sin necesidad de una reactivación manual.
Patrón de seguridad de administración y AJAX
Cada controlador AJAX de administración en el plugin sigue la misma estructura:
- Verificar la capacidad a través de
current_user_can( CAP_MANAGE ). En caso de fallo, responder con HTTP403y salir. - Verificar el nonce a través de
check_ajax_referer( <action>, 'nonce' ). - Sanear las entradas (
absint,sanitize_key,sanitize_text_field, etc.). - Realizar el trabajo.
- Devolver
wp_send_json_success()owp_send_json_error().
Para conocer los nonces y requisitos de capacidad por acción, consulte AJAX Actions.
Seguridad de REST y webhooks
- Los endpoints públicos opcionales de vehículos
(
GET /as24ci/v1/vehicles[*]) solo se registran cuando la opciónas24ci_rest_api_enabledes igual a'1'. - El endpoint de importación por cron (
GET /as24ci/v1/cron-import) requiere un token almacenado enas24ci_cron_token. La comparación del token utilizahash_equals()para mitigar ataques de temporización. Se prefiere la cabeceraAuthorization: Bearer <token>frente a la alternativa de cadena de consulta para que el token no se escriba en los registros de acceso. - Los endpoints de favoritos y analíticas son públicos por diseño para que los visitantes anónimos puedan utilizarlos. Ambos aplican validación de entrada y restricciones de tipo límite de tasa (los favoritos están limitados a 50 ID por llamada; los eventos de analíticas deben usar los nombres de eventos permitidos).
- Los webhooks salientes firman las cargas útiles con HMAC-SHA256 en la
cabecera
X-AS24CI-Signaturecuando se configura un secreto compartido. Consulte Webhooks.
Manejo y escape de entradas
- Las entradas de los formularios se sanean mediante funciones auxiliares dedicadas
(
sanitize_email,sanitize_text_field,sanitize_url,wp_kses_postpara cuerpos de mensajes,absintpara ID). - La salida en las plantillas de administración utiliza
esc_html(),esc_attr(),esc_url()ywp_kses_post()según corresponda. - El acceso a la base de datos utiliza
$wpdb->prepare()para consultas parametrizadas; el SQL sin procesar se restringe a operaciones de esquema e ignorados documentados dephpcsen el código fuente.
Instrucciones paso a paso
Conceder acceso a la administración del importador a un usuario no administrador
- En WordPress, edite el perfil de usuario.
- Añada un rol personalizado (o amplíe el usuario) con la
capacidad
manage_as24_imports. - Guarde los cambios. El usuario ahora puede acceder a las páginas de administración del importador, activar importaciones y gestionar leads.
Permitir la creación de vehículos sin acceso al importador
- Asigne al usuario el rol
as24ci_editorcreado por el plugin. - El usuario podrá leer, editar, publicar y eliminar entradas de
as24ci_carpero no podrá acceder a la administración del importador ni cambiar los ajustes del plugin.
Notas operativas
manage_as24_importses una capacidad primitiva en el roladministrator. Eliminarla de los administradores (por ejemplo, con un plugin personalizado de gestión de usuarios) bloqueará el acceso de todos los administradores a las pantallas de administración del importador y de leads.- Las asignaciones de capacidades se escriben al realizar la activación. Si un usuario
elimina una capacidad después de la activación, esta no se restaura
automáticamente. Las actualizaciones del plugin que introducen una nueva capacidad
vuelven a ejecutar la asignación basándose en la opción
as24ci_caps_version. - El plugin no bloquea los flujos estándar de inicio de sesión o contraseña de WordPress.
Utilice una política de contraseñas segura y considere la autenticación de doble
factor para las cuentas que posean
manage_as24_imports. - La configuración sensible (credenciales de cliente de la API, secretos de webhooks,
el token de cron) se almacena en
wp_options. En las instalaciones migradas a la versión de datos 5, los secretos reversibles (as24ci_client_secret,as24ci_hub_api_key,as24ci_webhook_secret) se almacenan encriptados con AES-256-GCM a través deAS24CI\Secrets, y el token de cron se almacena como un hash HMAC con clave. Las copias de seguridad de la base de datos deben seguir tratándose como si contuvieran secretos. La clave de API de Gemini gestionada que utiliza el AI Assistant se entrega de servidor a servidor mediante la API Platform y se mantiene encriptada porAS24CI\Ai_Credential_Manager; no se almacena como una opción de WordPress en texto plano ni se expone en la interfaz de administración. - El formulario de contacto sanea las entradas y utiliza un honeypot en algunos flujos, pero el plugin no incluye un CAPTCHA. Combínelo con un plugin de seguridad o antispam si su sitio es blanco de ataques.
Resolución de problemas
Permission denied.al activar una importación — el usuario carece demanage_as24_imports. Añada la capacidad al rol del usuario.- Los usuarios de
as24ci_editorno pueden editar entradas de vehículos — verifique que el rol conserve sus capacidades de CPT (algunos gestores de roles de usuario eliminan capacidades al cambiar las etiquetas). Vuelva a activar el plugin para volver a aplicar el mapa de capacidades, o ejecute los comandos de WP-CLI correspondientes. - El endpoint de importación por cron siempre devuelve
403— no hay ningún token configurado o el valor proporcionado difiere. Genere un nuevo token desde la pestaña de administración Import & Limits. - REST
/vehiclesdevuelve404— la API REST pública está deshabilitada. Establezcaas24ci_rest_api_enableden'1'. - Las firmas de webhook no coinciden en el receptor — vuelva a calcularlas en el receptor utilizando el cuerpo de la solicitud original sin modificar y el mismo secreto compartido. Consulte Webhooks.