Лучший способ предотвратить атаку CSRF в узле(resify) — Угловое применение

#angular #csrf #restify #csrf-token

Вопрос:

Я работаю над узловым приложением, использующим REST API с данными json, которые должны быть защищены от атаки CSRF. Пример кода приведен ниже:

index.js

 const
restify = require('restify'),
restifyPlugins = require('restify').plugins,
serverPort = 3000;

var CookieParser = require('restify-cookies');
var csrf = require('csurf');

// Route middlewares
var csrfProtection = csrf({ cookie: true });


server.use(CookieParser.parse);
server.use(csrfProtection); *// Verify all API with CSRF token*
const server = restify.createServer({
 name: 'Test App'
 });


 //Generate CSRF token on server side and pass it to client side

 server.get('/api', (req, res, next) => {

     console.log(req.csrfToken())
  
    res.setCookie('XSRF-TOKEN', req.csrfToken(),{path: '/',httpOnly: false });

      res.send('test ');
     return next();
  });

 //And on the client-side a header XSRF-TOKEN :**CSRFtoken** is passed 
 server.post('/api/checkCSRF', (req, res, next) => {

    res.send({"message" :"Success"})
   
    return next();
});
server.listen(serverPort)
 

Теперь это работает, если передается недопустимый маркер csrf. Но при тестировании с помощью BurpSuite с включенным перехватом злоумышленник получает доступ ко всем заголовкам/файлам cookie и данным полезной нагрузки(формат json). И, следовательно, он мог совершать действия с учетной записью пользователя без внимания пользователя.

Я прочитал пару статей, но все еще не смог найти подходящего способа его реализации. Я также читал, что использование файлов cookie-это неправильный подход. Есть ли какой-нибудь другой способ предотвратить это? Например, добавить уникальный токен CSRF в каждый адрес HTTP-запроса и проверить, что токен CSRF действителен, прежде чем обрабатывать запрос на стороне сервера?

Любая помощь, ссылки, советы, критика будут оценены по достоинству.

Заранее спасибо.