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接続の場合にブラウザーに表示される内容の概要です:
Webアプリケーションを安全に動作させ、フォーラムで意見をお聞かせください!