Avertissement SameSite Chrome 77

168

Depuis la dernière mise à jour, je rencontre une erreur avec les cookies, liée à l'attribut SameSite.

Les cookies proviennent de développeurs tiers (Fontawesome, jQuery, Google Analytics, Google reCaptcha, Google Fonts, etc.)

Les erreurs dans la console Chrome sont comme ceci.

A cookie associated with a cross-site resource at <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 <URL> and <URL>.
(index):1 A cookie associated with a cross-site resource at http://jquery.com/ 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.
(index):1 A cookie associated with a cross-site resource at http://fontawesome.com/ 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.
(index):1 A cookie associated with a cross-site resource at http://google.com/ 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.
(index):1 A cookie associated with a cross-site resource at https://google.com/ 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.
(index):1 A cookie associated with a cross-site resource at https://www.google.com/ 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.
(index):1 A cookie associated with a cross-site resource at http://www.google.com/ 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.
(index):1 A cookie associated with a cross-site resource at http://gstatic.com/ 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.

Y a-t-il quelque chose que je dois faire sur ma machine ou mon serveur local ou est-ce juste une fonctionnalité qu'ils devraient implémenter dans les futures versions de leurs bibliothèques?

peiblox
la source
9
rien à voir avec votre code. c'est quelque chose que leurs serveurs Web devront prendre en charge.
Daniel A. White
J'ai le même problème, cela signifie-t-il que nous ne pouvons pas utiliser de sites Web tiers dans notre code?
Love2Code
1
Vous pouvez utiliser les bibliothèques sans aucun problème. C'est juste un avertissement que la console lancera jusqu'à ce qu'elle implémente cela dans leurs serveurs comme @ DanielA.White l'a dit auparavant.
peiblox
9
Et que se passe-t-il exactement si le tiers ne corrige pas ses cookies à la date A future release of Chrome will only deliver ... - mon site sera-t-il cassé? On dirait que cette date future est le 02/04/2020 - pas trop loin.
JK.
1
Comme mentionné par @ DanielA.White, cela doit être corrigé dans le code tiers, voir cette réponse pour plus de contexte.
Hooman Bahreini

Réponses:

142

Cet avertissement de la console n'est pas une erreur ou un problème réel - Chrome ne fait que répandre le mot sur cette nouvelle norme pour augmenter l'adoption par les développeurs.

Cela n'a rien à voir avec votre code. C'est quelque chose que leurs serveurs Web devront prendre en charge.

La date de sortie d'un correctif est le 4 février 2020 par: https://www.chromium.org/updates/same-site

Février 2020: déploiement de l'application pour Chrome 80 Stable: les comportements SameSite-by-default et SameSite = None-requires-Secure commenceront à se déployer vers Chrome 80 Stable pour une population limitée initiale à partir de la semaine du 17 février 2020 , à l'exclusion de Lundi, jour de la fête du président américain. Nous surveillerons et évaluerons de près l'impact de l'écosystème à partir de cette phase initiale limitée en augmentant progressivement le nombre de déploiements.

Pour le calendrier complet des versions de Chrome, voir ici .

J'ai résolu le même problème en ajoutant un en-tête de réponse

response.setHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");

SameSiteempêche le navigateur d'envoyer le cookie avec les demandes intersites. L'objectif principal est d'atténuer le risque de fuite d'informations d'origine croisée. Il offre également une certaine protection contre les attaques de contrefaçon de requêtes intersites. Les valeurs possibles pour le drapeau sont Lax ou Strict.

Cookies de SameSite expliqués ici

Veuillez vous référer à ceci avant d'appliquer une option.

J'espère que cela vous aidera.

Rahul Mahadik
la source
39
Avez-vous fait des recherches sur la façon dont cela pourrait être géré lors de l'extraction de scripts tiers qui définissent des cookies (comme Google Analytics et Google Tag Manager)?
BRass
26
où dois-je ajouter l'en-tête de réponse? Merci.
Kris Wen
2
Si vous utilisez peut-être .NET, l'ajout de web.config ou l'ajout de règles de réécriture d'URL dans IIS résoudrait ce problème. Le mérite revient à la solution sur stackoverflow.com/questions/38954821/…
BDarley
3
Existe-t-il une solution qui n'implique pas JavaScript?
posfan12
11
Je dois dire qu'un avertissement amical déclenche vraiment l'OCD de nombreux développeurs comme moi. Ma frustration à l'égard de la console sale augmente considérablement lorsque je vois YouTube, une propriété de Google, un délinquant générant des erreurs de console dans Google Chrome .. C'est la façon dont j'ai parlé.
Marc
22

Si vous testez sur localhost et que vous n'avez aucun contrôle sur les en-têtes de réponse, vous pouvez le désactiver avec un indicateur chrome.

Visitez l'url et désactivez-la: chrome: // flags / # same-site-by-default-cookies Capture d'écran des cookies par défaut de SameSite

Je dois le désactiver, car Chrome Canary vient de commencer à appliquer cette règle à partir d'environ V 82.0.4078.2 et maintenant il ne définit pas ces cookies.

Remarque: J'active uniquement ce drapeau dans Chrome Canary que j'utilise pour le développement. Il est préférable de ne pas activer le drapeau pour la navigation quotidienne de Chrome pour les mêmes raisons que Google l'introduit.

Volonté
la source
1
La désactivation de ce drapeau et la relance de Canary n'ont pas fonctionné pour moi, donc je viens d'ajouter -SameSiteà la boîte principale "Filtre", que j'ai également utilisée pour supprimer ce problème de carte source ennuyeux => superuser.com/questions/1523427/…
Avolition
4

Pour élaborer sur la réponse de Rahul Mahadik, cela fonctionne pour MVC5 C # .NET:

AllowSameSiteAttribute.cs

public class AllowSameSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var response = filterContext.RequestContext.HttpContext.Response;

        if(response != null)
        {
            response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");
            //Add more headers...
        }

        base.OnActionExecuting(filterContext);
    }
}

HomeController.cs

    [AllowSameSite] //For the whole controller
    public class UserController : Controller
    {
    }

ou

    public class UserController : Controller
    {
        [AllowSameSite] //For the method
        public ActionResult Index()
        {
            return View();
        }
    }
Joel Wiklund
la source
Pouvez-vous s'il vous plaît regarder mon code. Il est également lié à la politique CORS par Chrome. stackoverflow.com/questions/60556740/…
Abhay salvi
4

Corrigé en ajoutant crossorigin à la balise de script.

De: https://code.jquery.com/

<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>

Les attributs d'intégrité et d'origines croisées sont utilisés pour la vérification de l'intégrité des sous-ressources (SRI). Cela permet aux navigateurs de s'assurer que les ressources hébergées sur des serveurs tiers n'ont pas été falsifiées. L'utilisation du SRI est recommandée comme meilleure pratique, chaque fois que les bibliothèques sont chargées à partir d'une source tierce. En savoir plus sur srihash.org

John Magnolia
la source
srihash.org dit Malheureusement, nous ne connaissons pas ce domaine.
Vlad
Où puis-je trouver la balise de script? Est-ce dans le web.config?
CarlD
1
@CarlD à partir du message d'erreur recherchez le script à l'origine de l'erreur, puis affichez la source html de la page Web
John Magnolia
@JohnMagnolia Je viens de le faire et il ne s'est rien passé.
CarlD