С сервером node.js, встроенным в защиту CSRF, как мобильные приложения получают токен CSRF?

Я использую node.js и Express для создания простого сервера, в котором CSRF реализуется через Express Framework.

app.use(express.csrf()); 
app.use(function(req, res, next){
  res.locals.token = req.session._csrf;
  res.locals.year = new Date().getFullYear();
  next();
});

Промежуточное программное обеспечение Connect CSRF автоматически генерирует токен req.session._csrf, и эта функция сопоставляет его с res.locals.token, чтобы он был доступен для шаблонов, созданных из ejs. Это хорошо работает с веб-приложением.

Но когда дело доходит до моего мобильного приложения, сделанного из Android, например, для входа в систему, только отправка имени пользователя и пароля без токена CSRF приведет к тому, что сервер отклонит запрос.

так как предыдущий код работает только для веб-шаблона, поэтому мой вопрос, как получить этот токен в приложении с поддержкой Android

лучшие ргдс си

1 ответ

Решение

Если вам нужно защитить только страницу входа в систему, то вы можете легко выполнить GET для страницы входа в систему (которая возвращает JSON или XML) и подобрать токен CSRF таким образом.

Тем не менее, я думаю, что CSRF не проблема для мобильных устройств. Вместо этого вы можете использовать промежуточное ПО cookiesession, чтобы установить флаг сеанса, чтобы указать, что этот тип клиента не требует CSRF.

Затем используйте этот ответ. Отключите проверку csrf для некоторых запросов в Express, чтобы включить или отключить CSRF в зависимости от того, присутствует ли этот флаг в файле cookie.

Кроме того, ваше мобильное приложение может просто добавить флаг к каждому URL-адресу запроса, а не использовать cookie-подход, что означает, что оно не требует CSRF. Однако это означает, что хакер может просто обойти защиту CSRF, если он знает этот флаг.

Другие вопросы по тегам