From de13c42f8b0118cae24b1e32912a8410d385f9aa Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Tue, 26 Mar 2024 18:11:19 +0100 Subject: [PATCH] =?UTF-8?q?-=20fixed=20criticit=C3=A0=20sulla=20password?= =?UTF-8?q?=20e=20su=20tokens=20che=20potevi=20richiedere=20sul=20projecti?= =?UTF-8?q?on.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/tools/general.js | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/server/tools/general.js b/src/server/tools/general.js index d52bd98..94e9114 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -1967,6 +1967,22 @@ module.exports = { return query; }, + sanitizzaProjection: function (mioproj) { + + // mioproj = {valore: '$password'}; + + const COL_TO_REMOVE = ['$password', '$tokens', '$tokens.token', 'ipaddr']; + + for (let chiave in mioproj) { + // Elimina questa richiesta della password ! + if (COL_TO_REMOVE.includes(mioproj[chiave])) { + delete mioproj[chiave]; + } + } + + return mioproj; + }, + getLookup: function (params, num, pass_proj, proj_add) { const query = []; @@ -1998,6 +2014,7 @@ module.exports = { if (params.lk_tab) { let proj = params.lk_proj; + proj = this.sanitizzaProjection(proj); if (!!pass_proj) { proj = pass_proj; } @@ -2752,6 +2769,8 @@ module.exports = { // NUOVA VERSIONE let proj = params.lookup2 ? params.lookup2.lk_proj : null; + proj = this.sanitizzaProjection(proj); + if (params.proj0) { query.push({ $project: params.proj0 }); } @@ -3050,12 +3069,17 @@ module.exports = { if (ris) { if (params.table === 'users') { for (const myrec of ris.rows) { - myrec.password = '**********'; + if (myrec.ipaddr) + myrec.ipaddr = ''; + if (myrec.tokens) + myrec.tokens = []; + if (myrec.password) + myrec.password = ''; } } else if (params.table === 'mygroups') { for (const myrec of ris.rows) { if (myrec.pwd_cryp) - myrec.pwd_cryp = '**********'; + myrec.pwd_cryp = ''; } } @@ -4927,7 +4951,7 @@ module.exports = { * Funzione per scaricare dati GeoJSON dei comuni d'Italia e salvarli localmente. * @param {string} url - L'URL dal quale scaricare i dati GeoJSON. * @param {string} outputPath - Il percorso del file in cui salvare i dati GeoJSON. - */ + */ async downloadGeoJSON(url, outputPath) { try { // Effettua una richiesta GET all'URL specificato per scaricare i dati.