Seguridad y capacidades

Fenómenus sigue el modelo estándar de WordPress: comprobaciones de capacidades en cada acción, nonces en cada petición que modifica el estado, entrada saneada y salida escapada.

Capacidades

Área Capacidad requerida
Elementos del menú: crear, editar, ordenar, duplicar, estado, precios edit_posts
Eliminar un elemento del menú delete_posts
Categorías: crear, renombrar, reordenar, eliminar manage_categories
Asignar una categoría durante la importación masiva La capacidad assign_terms de la taxonomía
Pantallas de ajustes edit_posts
Asistente de configuración edit_posts
Generador de QR, generador de PDF, herramientas de IA edit_posts
Editar el indicador de perfil de otro usuario edit_user de ese usuario

Fenómenus nunca concede una capacidad que la cuenta no tenga ya, con una excepción deliberada descrita a continuación.

El perfil Basic

Un indicador por usuario, almacenado por sitio en multisitio, que reduce la administración al trabajo con menús. Cuando está activado, estas áreas se eliminan y se bloquean por URL directa:

Entradas, Páginas, la pantalla estándar de nueva entrada, Medios, Comentarios, Apariencia, Plugins, Usuarios, Herramientas, Ajustes y la pantalla de ajustes de idioma.

La gestión de medios sigue funcionando desde dentro de un elemento, porque los endpoints de subida no se bloquean deliberadamente.

La excepción mencionada anteriormente: una cuenta con el perfil Basic que ya posee una capacidad de edición de entradas o páginas recibe las capacidades necesarias para gestionar las traducciones de contenido y sus slugs, de modo que un editor restringido pueda seguir manteniendo menús traducidos.

Nonces

Cada petición que modifica el estado está protegida con nonce, incluidas las operaciones de elementos y categorías, el guardado de orden, los cambios de estado, las actualizaciones de metadatos en línea, la duplicación, la eliminación, las exportaciones, las importaciones masivas, el guardado de alérgenos, el guardado de ajustes, los pasos del asistente de configuración, las peticiones de datos QR, las peticiones de contenido y ajustes del PDF y las herramientas de IA.

Entrada y salida

  • Los títulos y los valores de texto se sanean al guardar.
  • Las áreas de texto que permiten HTML se sanean contra el conjunto permitido; el resto se almacena como texto plano.
  • Las URLs se sanean como URLs, incluidos los valores de logotipo, imagen, vídeo y URL personalizada.
  • Las imágenes subidas para el análisis de la carta de vinos se validan contra una lista blanca explícita de tipos MIME: JPEG, PNG, GIF y WebP.
  • La salida se escapa en el punto de renderizado.

El límite de la petición de IA

Las peticiones al servicio de IA se firman con la licencia y el dominio del sitio, a través de un único límite de petición en lugar de una construcción de peticiones por función. La falta de licencia, la falta de dominio y la configuración no válida producen cada una un error explícito en lugar de una petición sin firmar o parcial.

Ninguna clave de licencia se renderiza en una página, y ninguna herramienta de IA escribe contenido sin que el operador lo guarde.

Datos orientados al visitante

Fenómenus no recopila nada de los visitantes. La selección del filtro de alérgenos, la preferencia de visibilidad de iconos y la colección de favoritos se almacenan en el propio navegador del visitante, no se transmiten al sitio como identidad y no son legibles por el restaurante.

La vista de favoritos se renderiza a partir de los datos que el navegador envía con la petición; no hay ningún registro en el lado del servidor.

Ámbito en multisitio

Los menús, los ajustes, las bibliotecas de alérgenos, la habilitación de herramientas y el indicador del perfil Basic son por sitio. Un usuario restringido en un restaurante no está restringido en otro a menos que el indicador esté activado también allí.

Orientación para integraciones

  1. Comprueba la misma capacidad que el producto verifica para la acción equivalente.
  2. Verifica un nonce en cualquier petición que modifique el estado que añadas.
  3. Sanea en la entrada, escapa en la salida; no confíes en que los valores almacenados sean seguros.
  4. Nunca expongas públicamente los precios de vinos de referencia del mercado.
  5. Nunca construyas un endpoint que devuelva datos del menú con la identidad del visitante adjunta — el producto deliberadamente no tiene ninguna.
  6. Trata los datos de alérgenos como relevantes para la seguridad: nunca los derives, nunca los pongas por defecto, nunca los publiques sin revisar.