feat: Write log entry when request with master key is rejected as outside of masterKeyIps (#8350)
This commit is contained in:
@@ -135,6 +135,22 @@ describe('middlewares', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not succeed and log if the ip does not belong to masterKeyIps list', async () => {
|
||||||
|
const logger = require('../lib/logger').logger;
|
||||||
|
spyOn(logger, 'error').and.callFake(() => {});
|
||||||
|
AppCache.put(fakeReq.body._ApplicationId, {
|
||||||
|
masterKey: 'masterKey',
|
||||||
|
masterKeyIps: ['10.0.0.1'],
|
||||||
|
});
|
||||||
|
fakeReq.ip = '127.0.0.1';
|
||||||
|
fakeReq.headers['x-parse-master-key'] = 'masterKey';
|
||||||
|
await new Promise(resolve => middlewares.handleParseHeaders(fakeReq, fakeRes, resolve));
|
||||||
|
expect(fakeReq.auth.isMaster).toBe(false);
|
||||||
|
expect(logger.error).toHaveBeenCalledWith(
|
||||||
|
`Request using master key rejected as the request IP address '127.0.0.1' is not set in Parse Server option 'masterKeyIps'.`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should not succeed if the ip does not belong to masterKeyIps list', async () => {
|
it('should not succeed if the ip does not belong to masterKeyIps list', async () => {
|
||||||
AppCache.put(fakeReq.body._ApplicationId, {
|
AppCache.put(fakeReq.body._ApplicationId, {
|
||||||
masterKey: 'masterKey',
|
masterKey: 'masterKey',
|
||||||
|
|||||||
@@ -167,6 +167,10 @@ export function handleParseHeaders(req, res, next) {
|
|||||||
|
|
||||||
let isMaster = info.masterKey === req.config.masterKey;
|
let isMaster = info.masterKey === req.config.masterKey;
|
||||||
if (isMaster && !ipRangeCheck(clientIp, req.config.masterKeyIps || [])) {
|
if (isMaster && !ipRangeCheck(clientIp, req.config.masterKeyIps || [])) {
|
||||||
|
const log = req.config?.loggerController || defaultLogger;
|
||||||
|
log.error(
|
||||||
|
`Request using master key rejected as the request IP address '${clientIp}' is not set in Parse Server option 'masterKeyIps'.`
|
||||||
|
);
|
||||||
isMaster = false;
|
isMaster = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user