Skip to content

v0.7.0

Choose a tag to compare

@fabiomb fabiomb released this 02 Oct 14:54
· 10 commits to main since this release

Nuevo: Actualizaciones desde los releases de GitHub (#27)

El plugin no está en wordpress.org, así que cada sitio tenía que bajar el zip de cada versión y reemplazarlo a mano.

  • WPS_Updater (nuevo): con la cabecera Update URI: https://github.com/fabiomb/wp-secure, WordPress deja de buscar el plugin en wordpress.org y le pregunta al filtro update_plugins_github.com, que consulta el último release publicado. La versión nueva aparece en Plugins y en Escritorio → Actualizaciones, se instala con un clic y funciona con las actualizaciones automáticas de WordPress.
  • «Ver detalles» muestra las notas del release (el changelog), convertidas a HTML y escapadas.
  • Seguridad: sólo se acepta el zip wp-secure-X.Y.Z.zip del release publicado en este repositorio (no borradores ni prereleases, ni otro host). Con Update URI, otro plugin con el mismo slug en wordpress.org no puede reemplazarlo.
  • Privacidad: la consulta usa un User-Agent propio (WP-Seguro/X.Y.Z); el de WordPress incluye la URL del sitio. Se guarda en caché tres horas (una si GitHub falla) y «Buscar actualizaciones» fuerza una consulta nueva.
  • Carpeta: si el plugin está instalado con otro nombre de carpeta (wp-secure-main), la actualización la respeta en lugar de dejar una segunda copia.
  • Se puede desactivar con el ajuste «Buscar versiones nuevas en GitHub» (API y Datos) o la constante WPS_DISABLE_UPDATE_CHECK.

Seguridad: Verificación de firma de las actualizaciones (#28)

Con actualizaciones automáticas, la cuenta de GitHub pasa a ser la llave de todos los sitios: quien la tomara podría publicar un release con un backdoor.

  • Firma Ed25519: cada zip se publica con su firma (wp-secure-X.Y.Z.zip.sig), hecha con una clave privada que no está en GitHub. El plugin trae dos claves públicas: la principal y una de emergencia guardada fuera de línea, para poder reemplazar la principal si se pierde o se compromete.
  • WPS_Updater::download_verified() (nuevo, filtro upgrader_pre_download): descarga el paquete y su firma y la verifica con sodium_compat, que viene con WordPress, así que funciona aunque PHP no tenga la extensión sodium. Si falta o no es válida, la actualización se cancela antes de tocar el plugin instalado, con un mensaje claro y un evento crítico «Actualización rechazada».
  • docs/releasing.md (nuevo): cómo armar, firmar y publicar una versión.
  • Plugin URI apunta al repositorio (github.com/fabiomb/wp-secure).

Versión

  • Versión actualizada a 0.7.0 en la cabecera del plugin, la constante WPS_VERSION y el MU-plugin. Sin cambios de base de datos; la migración agrega el ajuste «Buscar versiones nuevas en GitHub» (activado). Esta versión se instala a mano: es la primera con el actualizador. Desde acá, las siguientes llegan desde el panel.