CookieとSameSite +セキュア-ExpressJS


8

Expressアプリケーションで次の設定を行っているにもかかわらず、コンソールに次の警告が表示されています。誰かが以前にこのエラーを見たことがありますか?検索した結果、https://github.com/expressjs/express/issues/3095にアクセスしました

私はエクスプレスも使用しています: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.

Insomia(Postman)を使用してリクエストを行うと、次のようになります

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

問題が..私は現在、午前HTTPSではなくHTTP経由でクッキーをサービスに関連するかもしれない
エリック・E

テストした結果、HTTPでも機能することがわかりました。
David Lin、

回答:


1

私の知る限り、これは将来のChromeの新しい実装に関する警告です

cookieのsamesiteオプション:Chrome 80以降、SameSite属性を指定していないcookieは、SameSite = Laxであるかのように扱われ、既存のサイトへの移行を容易にするためにPOSTリクエストに含まれるという動作が追加されます。

その他の情報:https : //www.chromium.org/updates/same-site

Webページをテストしたい場合は、この記事でテスト用のChromeフラグを設定する方法について説明します。ページが機能しなくなった場合は、すべてのリクエストを確認し、「http://」から「https://」への更新を確認するか、サードパーティのCookieを確認する必要があります


-1

ドキュメントリンク:https : //www.npmjs.com/package/express-session#cookiesamesite

以下のコードはあなたの問題を解決します。今後もお勧めです。

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));

あなたのケースでは、設定sameSite'none'

更新を編集:CaptainAdminによって指摘された問題を修正


1
セッション構成にはsameSiteのようなプロパティはありません。それはCookieに対するものです
CaptainAdmin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.