Revoir l'intégration de LaPastille dans Laboite
Suite à l'étude de lapastille, nous avons constaté une 'mal conception' du déploiement de lapastille.
Partant de Visio-Agent,
- à l'arrivée sur Visio Agent, ref https://portail.apps.education.fr/widget/script.js ** C'est du code LaBoite (pivate/widget/script.js)
- accès 'widget' ==> accès /scripts/widget.js'
console.warn(
'This SNAP widget script is deprecated. See https://gitlab.mim-libre.fr/rizomo/la-pastille to use newer versions',
);
const script = document.createElement('script');
script.src = '/scripts/widget.js';
script.defer = true;
script.type = 'application/javascript';
customElements.whenDefined('snap-widget').then(() => {
const widget = document.createElement('div');
widget.innerHTML = `<snap-widget url="https://portail.apps.education.fr"></snap-widget>`;
document.body.append(widget);
});
document.head.appendChild(script);
Dans la Boite,
WebApp.connectHandlers.use('/scripts/widget.js', async (req, res) => {
if (req.method !== 'GET') {
res.writeHead(405);
res.end('Method not allowed');
return;
}
if (!Meteor.settings.public?.widget?.packageUrl) {
res.writeHead(404);
res.end();
return;
}
res.writeHead(200, {
'Content-Type': 'application/javascript',
});
const response = await axios.get(Meteor.settings.public.widget.packageUrl, {
responseType: 'stream',
});
response.data.pipe(res);
});
Dans Meteor.settings.public.widget.packageUrl, nous avons "https://unpkg.com/@suitesnap/la-pastille@1.0.0/index.umd.js"
Donc, chaque utilisateur se connectant à VisioAgent, déclenche le téléchargement d'un code DYNAMIQUE venant de unpkg.. C'est un trou de sécurité.
A faire :
- proposer autre chose (réintégration du code directement dans la Boite ?)