| 123456789101112131415161718192021222324252627 |
- const loggerFactory = require('@alias/logger');
- const logger = loggerFactory('growi:middleware:csrf');
- module.exports = (crowi) => {
- return async(req, res, next) => {
- const token = req.body._csrf || req.query._csrf || null;
- const csrfKey = (req.session && req.session.id) || 'anon';
- logger.debug('req.skipCsrfVerify', req.skipCsrfVerify);
- if (req.skipCsrfVerify) {
- logger.debug('csrf verify skipped');
- return next();
- }
- if (crowi.getTokens().verify(csrfKey, token)) {
- logger.debug('csrf successfully verified');
- return next();
- }
- logger.warn('csrf verification failed. return 403', csrfKey, token);
- return res.sendStatus(403);
- };
- };
|