Безопасность, cookie, бекенд, Expressjs,
В офф документации сказано что нужно использовать модули cookie-session или express-session которые создают сессии и для работы требуют совместимые сессионные хранилища. До этого в проекте было уже реализовано JWT авторизация, но управление куками(запись в них токена) происходит в контроллере. Обошлись без сессий. В проекте уже используется библиотека для связи с БД. Добавление еще одной выглядит как костыль.
Сейчас главная проблема в том что пользователи с других устройств не могут авторизоваться на сайте- запрос блокируется и в панели разработчика в деталях запроса светит ошибка - Provisional headers are shown
- Необходимость подключать еще одну библиотеку только для хранения сессий в той же БД связь с которой уже установлено другой библиотекой - нормально ли это?
- В офф документации ничего не сказано про альтернативу сессий - токены. Как мне по правильному настроить безопасность в простейшем виде? Чтобы все пользователи имели возможность авторизоваться на сайте.
Миддлвари подключены следующие:
app.use(express.json());
app.use(nocache());
app.use(cookieParser());
app.use(cors({
origin: 'http://localhost:3000',
methods: 'GET,PATCH,POST,DELETE,OPTIONS',
credentials: true,
optionSuccessStatus: 200
}));
app.use(router);
app.use(compression());
app.use(helmet(some options));
Что дает мне настройку следующих заголовков(21шт):
Surrogate-Control: no-store
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Pragma: no-cache
Expires: 0
Access-Control-Allow-Origin: http://localhost:3000
Vary: Origin
Access-Control-Allow-Credentials: true
Content-Security-Policy: default-src 'self';script-src 'self';object-src 'none';upgrade-insecure-requests
Strict-Transport-Security: max-age=360000
X-Frame-Options: DENY
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Set-Cookie: refreshToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: accessToken=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 18
ETag: W/"12-4CbZ3C1+6XJusRP57OSWRG8lXno"
Date: Sat, 17 Sep 2022 00:24:49 GMT
Connection: keep-alive
Keep-Alive: timeout=5
механизм защиты от xss и csrf атак еще не реализован.
Предлагайте любые дельные замечания.
Спасибо.