cookie の新しい SameSite属性 と Secure属性

Cookie の機能は長年にわたって成長し、進化してきましたが、いくつかのレガシー問題を残しています。これに対処するため、ブラウザー (Safari、Chrome、Firefox、Edge を含む) は、SameSite属性と Secure属性に関する動作を、cookie の secure-by-default モデルのために変更しています。

4D Webデベロッパーとして、クロスサイトリクエストフォージェリ からアプリケーションを守りたい場合、4D Webセッションの セッションcookie について懸念されるかもしれません。

Webセッションcookie が Web上で無意味に流通したり、適用されたデフォルト値のためにブラウザーに誤解されたりするのを防ぐためには、cookie の種別を確認すべきです:

  • サードパーティーcookie: 訪問したページとは異なるドメイン名に関連付けられた cookie。サードパーティーcookie は、ページをホストしているドメイン以外のドメインから供給されたページオブジェクト (広告など) によって設定されます。

 

または

  • ファーストパーティーcookie: 訪問したページのドメインに関連づけられた cookie。

 

ケースに応じて、Webセッションcookie の SameSite 属性に適切な値 を選択する必要があります。

セキュリティを強化するためには、接続がセキュア (HTTPS) であるときに Webセッションcookie に Secure属性を設定し、cookie が安全に送信できることをブラウザーに示す必要があります。

Web上のプライバシーとセキュリティを向上させるために、4D がどのように役立つかを続けて説明します。

Webサーバー のふるまいを選択できるようにするため、Webサーバーオブジェクト を拡張し、新しい sessionCookieSameSite プロパティを追加しました。

Samesite属性の値を設定する

デフォルトでは、Webサーバー はセッションcookie の SameSite属性を “Strict” に設定します。最も安全なので、この値をデフォルト値として選択しました。

別の値に設定するには、WEB Server コマンド を使用してください:

var $webServer; $settings : Object

$settings:=New object()
$webServer:=WEB Server
$settings.sessionCookieSameSite:=Web SameSite Lax
$webServer.stop()
$webServer.start($settings)

4Dランゲージでは、SameSite属性の値はそれぞれ専用の定数として提供されます:

  • Web SameSite Lax = “Lax”
  • Web SameSite Strict = “Strict”
  • Web SameSite None = “None”

 

以下は、ブラウザーで表示される概要です:

secure属性については?

SameSite属性の値が “None” である場合、ブラウザーによっては送信にあたって、Secure属性を別の値に設定する必要があります (HTTPS 接続の場合のみ)。

便利なことに、4D Webサーバー はこれを自動的に処理します。

接続が HTTPS の場合、ブラウザーが cookie を送信するよう、セッションcookie には自動的に Secure属性が設定されます。

以下は、HTTPS接続の場合にブラウザーに表示される内容の概要です:

 

blank

 

Webアプリケーションを安全に動作させ、フォーラムで意見をお聞かせください!

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。