legacy: la contraseña de la copia deja de viajar en la direccion

El formulario de exportacion se habia pasado a GET, asi que la contraseña que
cifra la copia de la identidad acababa en el historial del navegador, en el
registro del servidor y en el Referer de lo siguiente que se cargara. Vuelve a
POST, como en upstream, y la ruta la lee del cuerpo.

Comprobado: la exportacion sigue descargando el fichero, y la direccion con la
contraseña ya no responde.
This commit is contained in:
SITO 2026-08-19 11:23:18 +02:00
parent 975e892985
commit 1cf62028d2
2 changed files with 6 additions and 3 deletions

View file

@ -214,9 +214,12 @@ async function karvanInviteAuthor(roomId) {
accounts.setActive(name);
ctx.redirect('/settings');
})
.get('/legacy/export', async (ctx) => {
// POST y no GET: en la direccion, la contraseña acaba en el historial del
// navegador, en el registro del servidor y en el Referer de lo siguiente que
// se cargue. En el cuerpo, no.
.post('/legacy/export', koaBody(), async (ctx) => {
if (!isLoopbackRequest(ctx)) { ctx.status = 403; ctx.body = ''; return; }
const pw = ctx.query && ctx.query.password;
const pw = ctx.request.body && ctx.request.body.password;
if (!pw || pw.length < 32) return ctx.redirect('/legacy');
try {
const { filename, data } = await legacyModel.exportData({ password: pw });

View file

@ -25,7 +25,7 @@ const legacyView = async () => {
form(
{
action: "/legacy/export",
method: "GET",
method: "POST",
id: "exportForm"
},
label(i18n.exportPasswordLabel),