Cookieにはどのような属性が含まれていますか?

まず結論:

名前と値に加えて、Cookie には次のような一般的なものがいくつかあります。

ドメイン domain : Cookie を送信できるドメインを指定します。指定されたドメインまたはそのサブドメインに送信されたリクエストのみが Cookie を送信します。

パス path : Cookie にアクセスできるリクエスト URL パスを指定します。指定されたパスで開始されたリクエストのみが Cookie を送信します。

Expires/Max-size 有効期限: Cookie の有効期限を設定しますこの時間が経過すると、クライアントは Cookie を送信しなくなります。

セキュア セキュリティ フラグ:このフラグが設定されている場合、Cookie は HTTPS 経由で接続する場合にのみサーバーに送信されます。HTTP プロトコルを渡すのではなく、

HttpOnly:このフラグが設定されている場合、サーバーのみが Cookie を操作できます (応答ヘッダーを通じて)。クライアント (JavaScript) は Cookie を操作できなくなり、クロスサイト スクリプティング攻撃による Cookie 情報の取得が防止されます

具体解析:

Cookie には、名前と値に加えて、セキュリティの側面、ライフサイクル、ブラウザ内のどこでどのようにアクセスされるかなど、多くの側面を制御するプロパティがあります。

名前: Cookie の名前。サーバー側で Cookie を識別してアクセスするために使用されます。

: Cookie に関連付けられた値。任意の文字列またはテキストにすることができます。

1. ドメイン: Cookie へのアクセスを許可するホストをブラウザに指示します

指定しない場合、デフォルトで Cookie を設定したのと同じホストが使用されます。したがって、クライアントサイド JavaScript を使用して Cookie にアクセスする場合、URL と同じドメインの Cookie のみにアクセスできます。

同様に、HTTP リクエストのドメインと同じドメインを共有する Cookie のみをリクエスト ヘッダーとともにサーバーに送信できます。

この属性があるからといって、どのドメインに対しても Cookie を設定できるというわけではないことに注意してください。これは明らかに大きなセキュリティ リスクを引き起こすことになるからです。この属性が存在する唯一の理由は、ドメインの制限を軽減し、サブドメインで Cookie にアクセスできるようにすることです。

たとえば、現在のドメインが abc.xyz.com で、Cookie の設定時に Domain 属性を指定しない場合、デフォルトで abc.xyz.com になり、Cookie はそのドメインに限定されます。ただし、同じ Cookie を他のサブドメインでも利用できるようにしたい場合は、Domain=xyz.com を設定して、def.xyz.com やメイン ドメイン xyz.com などの他のサブドメインでも利用できるようにすることができます。

2. パス: Cookie にアクセスするために存在する必要があるリクエスト URL のパスを指定します。

Cookie をドメインに制限するだけでなく、パスによって制限することもできます。

パス属性 Path=/store を持つ Cookie は、パス /store とそのサブパス /store/cart、/store/gadgets などでのみアクセスできます

3. Expires/Max-size : Cookie の有効期限を設定します。

値が時刻に設定されている場合、Cookie はこの時刻に達すると期限切れになります。

設定されていない場合、デフォルト値はセッションです。これは、Cookie がセッションとともに期限切れになることを意味します。Cookie はブラウザを閉じると期限切れになります (ブラウザのタブではありません)

これに加えて、有効期限を過去に設定して Cookie を削除することもできます。

4、安全

Secure 属性を持つ Cookie は、HTTP プロトコルではなく、セキュア HTTPS プロトコル経由でのみサーバーに送信できます。

これにより、安全でない接続では Cookie にアクセスできなくなり、中間者攻撃を防ぐことができます。Web サイトが安全でない HTTP 接続を使用している場合を除き、この属性は常にすべての Cookie で使用する必要があります。

5、HTTPのみ

この属性により、サーバー経由でのみ Cookie にアクセスできるようになります。

したがって、サーバーのみが応答ヘッダーを介してそれらを設定でき、ブラウザーは後続のすべてのリクエストのヘッダーとともにそれらをサーバーに送信し、クライアント側の JavaScript を介してアクセスすることはできません

Cookie はクライアント側のスクリプトでは読み取れないため、これは機密情報 (認証トークンなど) を含む Cookie をXSS 攻撃から保護するのに役立ちます。

ただし、これは XSS 攻撃に対して完全に影響を受けないという意味ではありません。なぜなら、攻撃者が Web サイト上でサードパーティのスクリプトを実行できる場合、Cookie にアクセスできず、サーバーに対して関連する API リクエストを直接実行できる可能性があるからです。

したがって、ユーザーがページにアクセスし、ハッカーが Web サイトに悪意のあるスクリプトを挿入したと想像してください。ユーザーはスクリプトを使用して任意の API を実行し、ユーザーに代わって知らないうちにアクションを実行できます。

6. SameSite ロゴ (SameSite)

ブラウザがクロスサイトリクエストで Cookie を送信するかどうかを指定します。

これは、Strict、Lax、または None に設定できます。

要約: 

これらのプロパティのほとんどはオプションですが、Cookie が期待どおりに動作するように、少なくとも名前、値、およびドメインのプロパティを設定することをお勧めします。

おすすめ

転載: blog.csdn.net/qq_38290251/article/details/134320911