web-dev-qa-db-ja.com

JavaScriptを使用して設定されていないSamesite Cookie属性

私のサイトでJavaScriptを使用してSameSite属性を設定しようとしています。コードは

<script type="text/javascript">

    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;HttpOnly;SameSite=Lax";
  </script>

Cookieは設定されていますが、SameSite属性は設定されていません。私はどこに行方不明ですか?

ありがとう

7
Satya

あなたの問題はSameSiteではなくHttpOnlyにあります。 HttpOnlySameSiteは2つの独立したものであり、HttpOnlyを削除すると機能します。CookieにはSameSiteが設定されます。

<script>
    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax";
    alert( document.cookie );
</script>
2
iiic

JavaScript API document.cookieを介してHttpOnlyフラグを設定することはできません。フラグHttpOnlyは、サーバー応答のCookieヘッダーを介してのみ設定できます。 https://developer.mozilla.org/en-US/docs/Web/HTTP/CookiesCookies created via JavaScript cannot include the HttpOnly flag.を参照してください

あなたはThe cookie is being set but the SameSite attribute is not being setを書いたが、それは真実ではないと思う。属性HttpOnlyでJSを介して設定されたCookieはまったく拒否されるか、ブラウザによっては設定されますが、HttpOnlyフラグは無視されます-したがって、最終的にCookieはHTTPだけではありません。

2
mikep

これは、ブラウザに送信するCookieの応答でサーバー(HttpOnlyなど)のみが設定できる属性です。クライアント側のコードが設定を許可されていて、その目的について本当に考えている場合は同じです(同じOriginリクエストに対してのみブラウザーに強制的に送信させることでCSRFを防ぎます)。

SameSite Cookieを使用すると、サーバーはCookieをクロスサイトリクエストと共に送信しないように要求できます。これにより、クロスサイトリクエストフォージェリ攻撃(CSRF)からある程度保護されます。 SameSite Cookieはまだ実験段階であり、まだすべてのブラウザーでサポートされていません。

参考1

参考資料2

参考文献

1
Vasan