Cookies và SameSite + Secure - ExpressJS


8

Cảnh báo sau đang được hiển thị trong bảng điều khiển, mặc dù tôi có các cài đặt sau trên ứng dụng cấp tốc của mình. Có ai nhìn thấy lỗi này trước? Tìm kiếm của tôi đã đưa tôi đến https://github.com/expressjs/express/issues/3095

Tôi cũng đang sử dụng express: 4.17.1

let COOKIE_OPTIONS = { httpOnly: true, sameSite: 'None', secure: true };
A cookie associated with a cross-site resource at http://MYURL.URL was set
without the `SameSite` attribute. A future release of Chrome will only deliver 
cookies with cross-site requests if they are set with `SameSite=None` and 
`Secure`. You can review cookies in developer tools under 
Application>Storage>Cookies and see more details at 
https://www.chromestatus.com/feature/5088147346030592 and 
https://www.chromestatus.com/feature/5633521622188032.

Khi thực hiện một yêu cầu sử dụng Insomia (Người đưa thư) tôi thấy như sau

access_token=someToken; 
Path=/; 
HttpOnly; 
Secure; 
SameSite=None

Vấn đề có thể liên quan đến việc phân phát cookie qua HTTPS thay vì HTTP mà tôi hiện đang ..
Eric E

Đã thử nghiệm và tìm thấy nó hoạt động cho HTTP là tốt.
David Lin

Câu trả lời:


1

Theo như tôi biết, đây là một cảnh báo về việc triển khai mới cho chrome trong tương lai

Tùy chọn samesite trên cookie: Bắt đầu trong Chrome 80, các cookie không chỉ định thuộc tính SameSite sẽ được xử lý như thể chúng là SameSite = Lax với hành vi bổ sung mà chúng sẽ vẫn được đưa vào các yêu cầu POST để dễ dàng chuyển đổi cho các trang web hiện có.

Mọi thông tin khác: https://www.chromium.org/updates/same-site

Nếu bạn muốn kiểm tra trang web của mình, bài viết này giải thích cách đặt cờ Chrome để kiểm tra. Nếu trang của bạn ngừng hoạt động, bạn phải kiểm tra tất cả yêu cầu và xem các bản cập nhật "http: //" đến "https: //" hoặc kiểm tra cookie của bên thứ ba


-1

Liên kết tài liệu: https://www.npmjs.com/package/express-session#cookiesamesite

Các mã dưới đây sẽ giải quyết vấn đề của bạn. Điều này cũng được đề nghị đi về phía trước.

const express = require('express');
const session = require('express-session');
const app = express();

const sessionConfig = {
  secret: 'MYSECRET',
  name: 'appName',
  resave: false,
  saveUninitialized: false,
  store: store,
  cookie : {
    sameSite: 'strict', // THIS is the config you are looing for.
  }
};

if (process.env.NODE_ENV === 'production') {
  app.set('trust proxy', 1); // trust first proxy
  sessionConfig.cookie.secure = true; // serve secure cookies
}

app.use(session(sessionConfig));

Trong trường hợp của bạn, đặt sameSitethành'none'

Chỉnh sửa cập nhật: Đã sửa lỗi được chỉ ra bởi CaptainAdmin


1
Không có thuộc tính như sameSite cho phiên cấu hình, đó là cookie
CaptainAdmin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.