mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 15:46:01 +00:00
timg safe compare token fixes #91
This commit is contained in:
@@ -31,6 +31,7 @@ const scheduler = require('./controllers/scheduler');
|
|||||||
const { rundir } = require('./utility/directories');
|
const { rundir } = require('./utility/directories');
|
||||||
const platformInfo = require('./utility/platformInfo');
|
const platformInfo = require('./utility/platformInfo');
|
||||||
const processArgs = require('./utility/processArgs');
|
const processArgs = require('./utility/processArgs');
|
||||||
|
const timingSafeCheckToken = require('./utility/timingSafeCheckToken');
|
||||||
|
|
||||||
let authorization = null;
|
let authorization = null;
|
||||||
let checkLocalhostOrigin = null;
|
let checkLocalhostOrigin = null;
|
||||||
@@ -56,7 +57,7 @@ function start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
app.use(function (req, res, next) {
|
app.use(function (req, res, next) {
|
||||||
if (authorization && req.headers.authorization != authorization) {
|
if (authorization && !timingSafeCheckToken(req.headers.authorization, authorization)) {
|
||||||
return res.status(403).json({ error: 'Not authorized!' });
|
return res.status(403).json({ error: 'Not authorized!' });
|
||||||
}
|
}
|
||||||
if (checkLocalhostOrigin) {
|
if (checkLocalhostOrigin) {
|
||||||
|
|||||||
9
packages/api/src/utility/timingSafeCheckToken.js
Normal file
9
packages/api/src/utility/timingSafeCheckToken.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
const crypto = require('crypto');
|
||||||
|
|
||||||
|
function timingSafeCheckToken(a, b) {
|
||||||
|
if (!a || !b) return false;
|
||||||
|
if (a.length != b.length) return false;
|
||||||
|
return crypto.timingSafeEqual(Buffer.from(a), Buffer.from(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = timingSafeCheckToken;
|
||||||
Reference in New Issue
Block a user