Повар ie, связанный с межсайтовым ресурсом по адресу "URL", был установлен без атрибута "SameSite" - PullRequest
0 голосов
/ 03 апреля 2020

В консоли Google Chrome я получаю это предупреждение "Повар ie, связанный с межсайтовым ресурсом по адресу" URL ", был установлен без атрибута SameSite". Он был заблокирован, поскольку Chrome теперь доставляет файлы cookie только с межсайтовыми запросами, если они установлены с SameSite=None и Secure. Я проверил то же самое в Приложении> Хранилище> Файлы cookie. Я обнаружил, что этот сайт был «пустым / пустым», и я хочу обновить его до «Нет».

Пробовал некоторые способы, упомянутые другими разработчиками, но ничего не видно чтобы работать на меня.

Реализация 1: обновлен мой web.config с приведенным ниже кодом

<sessionState cookieSameSite="None" />
<httpCookies httpOnlyCookies="true" requireSSL="true" />  

// sameSite = "None" не для меня в разделе httpCookies и дает мне сообщение об ошибке атрибут sameSite не допускается

Реализация 2: код файла модифицированного класса, в котором я создаю этот Cook ie

HttpCookie sessionCookie = new HttpCookie("Token");
sessionCookie.Value = sessionToken;
                sessionCookie.HttpOnly = true;
                sessionCookie.SameSite = SameSiteMode.None;
sessionCookie.Secure = FormsAuthentication.RequireSSL && Request.IsSecureConnection;
sessionCookie.Domain = Request.Url.Host;
Response.Cookies.Add(sessionCookie); 

Реализация 3: создан отдельный фильтр MVC Чтобы справиться с этим

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

            if (response != null)
            {
                response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=None");
            }

            base.OnActionExecuting(filterContext);
        }

Реализация 4:

<rewrite>
  <outboundRules>
    <rule name="Add SameSite" preCondition="No SameSite">
      <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
      <action type="Rewrite" value="{R:0}; SameSite=None" />
      <conditions>
      </conditions>
    </rule>
    <preConditions>
      <preCondition name="No SameSite">
        <add input="{RESPONSE_Set_Cookie}" pattern="." />
        <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=" negate="true" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>

Target. net Framework 4.7.2

Нужно ли что-то делать на моей локальной машине? или сервер или в любом случае, с помощью которого я могу удалить это предупреждение.

1 Ответ

1 голос
/ 03 апреля 2020

Из таблицы OW ASP для настройки файлов cookie того же сайта для уменьшения CSRF, при установке для того же атрибута сайта значения none, мы также должны установить флаг безопасности на поваре ie. Это можно сделать, обратившись к этому вопросу , добавив httponly и безопасный флаг для set cook ie в java веб-приложении

Все браузеры для настольных компьютеров и почти все мобильные браузеры сейчас поддерживать атрибут SameSite. Чтобы отслеживать браузеры, реализующие его, и использование атрибута, обратитесь к следующей службе. Обратите внимание, что Chrome объявил, что они будут помечать куки как SameSite = Lax по умолчанию с Chrome 80 (в феврале 2020 г.), а Firefox и Edge планируют последовать их примеру. Кроме того, для файлов cookie, помеченных как SameSite = Нет, потребуется флаг безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...