Закрыта дыра безопасности

This commit is contained in:
Book Pauk
2020-02-11 13:02:43 +07:00
parent 2484568b21
commit 1bcd902817
4 changed files with 12 additions and 5 deletions

View File

@@ -14,7 +14,8 @@ class Misc {
try {
await wsc.open();
return await wsc.message(wsc.send(Object.assign({action: 'get-config'}, query)));
const config = await wsc.message(wsc.send(Object.assign({action: 'get-config'}, query)));
return config;
} catch (e) {
console.error(e);
}

View File

@@ -21,7 +21,8 @@ module.exports = {
maxTempPublicDirSize: 512*1024*1024,//512Мб
maxUploadPublicDirSize: 200*1024*1024,//100Мб
useExternalBookConverter: false,
useExternalBookConverter: false,
webConfigParams: ['name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'branch'],
db: [
{

View File

@@ -3,8 +3,11 @@ const _ = require('lodash');
class MiscController extends BaseController {
async getConfig(req, res) {
if (Array.isArray(req.body.params))
return _.pick(this.config, req.body.params);
if (Array.isArray(req.body.params)) {
const paramsSet = new Set(req.body.params);
return _.pick(this.config, this.config.webConfigParams.filter(x => paramsSet.has(x)));
}
//bad request
res.status(400).send({error: 'params is not an array'});
return false;

View File

@@ -98,7 +98,9 @@ class WebSocketController {
async getConfig(req, ws) {
if (Array.isArray(req.params)) {
this.send(_.pick(this.config, req.params), req, ws);
const paramsSet = new Set(req.params);
this.send(_.pick(this.config, this.config.webConfigParams.filter(x => paramsSet.has(x))), req, ws);
} else {
throw new Error('params is not an array');
}