Как указать SameSite и защитить файлы cookie (с помощью axios / React / Node Express) - PullRequest
0 голосов
/ 01 августа 2020

У меня есть это приложение чата, которое уже некоторое время работает, но внезапно оно дает мне эту проблему на стороне клиента:

Because a cookie's SameSite attribute was not set or is invalid, it defaults to SameSite=Lax,
which prevents the cookie from being set in a cross-site context. This behavior protects 
user data from accidentally leaking to third parties and cross-site request forgery.

Resolve this issue by updating the attributes of the cookie:
Specify SameSite=None and Secure if the cookie is intended to be set in cross-site contexts.
Note that only cookies sent over HTTPS may use the Secure attribute.

Я использую ax ios like это на моем клиенте React:

axios.defaults.withCredentials = true
axios.post('https://easytalkchatappv2.herokuapp.com/signin', {
      username: username,
      password: password
    }).then(res => {
      console.log(res.data)
})

Я устанавливаю файлы cookie с помощью JWT, делая это на моем Nodejs Express сервере внутри почтового запроса для / signin:

const user = {id: resp.insertedId}
const accessToken = await jwt.sign(user, process.env.ACCESS_TOKEN_SECRET)

res.cookie('token', accessToken)

Я также использую cook ie -parser. Как добавить эти атрибуты SameSite и Secure в файлы cookie?

1 Ответ

2 голосов
/ 02 августа 2020

Вы должны иметь возможность передавать свойства 'secure' и 'sameSite' методу res.cook ie; как показано ниже, где x заменяется значением, которое вы хотите использовать:

res.cookie('token', accessToken, { sameSite: x, secure: x })

Как показано здесь в документации Express: https://expressjs.com/en/api.html#res .cook ie

...