Skip to content

Commit

Permalink
Merge pull request javascript-tutorial#1619 from Rnbsov/patch-70
Browse files Browse the repository at this point in the history
add changes from english version
  • Loading branch information
javascript-translate-bot committed Jun 17, 2022
2 parents 098c554 + f5bf20c commit 2d07497
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions 6-data-storage/01-cookie/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ alert( document.cookie ); // cookie1=value1; cookie2=value2;...

## Запись в document.cookie

Мы можем писать в `document.cookie`. Но это не просто данные, а акcессор (геттер/сеттер). Присваивание
обрабатывается особым образом.
Мы можем писать в `document.cookie`. Но это не просто свойство данных, а [акcессор (геттер/сеттер)](info:property-accessors). Присваивание к нему обрабатывается особым образом.

**Запись в `document.cookie` обновит только упомянутые в ней куки, но при этом не затронет все остальные.**

Expand Down Expand Up @@ -95,25 +94,29 @@ URL-префикс пути, куки будут доступны для стр

- **`domain=site.com`**

Домен, на котором доступны наши куки. На практике, однако, есть ограничения -- мы не можем указать здесь какой угодно домен.
Домен определяет, где доступен файл куки. Однако на практике существуют определённые ограничения. Мы не можем указать здесь какой угодно домен.

По умолчанию куки доступно лишь тому домену, который его установил. Так что куки, которые были установлены сайтом `site.com`, не будут доступны на сайте `other.com`.
**Нет никакого способа разрешить доступ к файлам куки из другого домена 2-го уровня, поэтому `other.com` никогда не получит куки, установленный по адресу `site.com`.**

...Но что более интересно, мы не сможем получить эти куки на поддомене `forum.site.com`!
Это ограничение безопасности, позволяющее нам хранить конфиденциальные данные в файлах куки, которые должны быть доступны только на одном сайте.

По умолчанию куки доступны лишь тому домену, который его установил.

Пожалуйста, обратите внимание, что по умолчанию файл куки также не передаётся поддомену, например `forum.site.com `.

```js
// на site.com
// если мы установим файл куки на веб-сайте site.com...
document.cookie = "user=John"

// на forum.site.com
// ...мы не увидим его на forum.site.com
alert(document.cookie); // нет user
```

**Нет способа сделать куки доступным на другом домене 2-го уровня, так что `other.com` никогда не получит куки, установленное сайтом `site.com`.**
...Но это можно изменить. Если мы хотим разрешить поддоменам типа `forum.site.com` получать куки, установленные на `site.com`, это возможно.

Это ограничение безопасности, чтобы мы могли хранить в куки конфиденциальные данные, предназначенные только для одного сайта.
Чтобы это произошло, при установке файла куки в `site.com `, мы должны явно установить параметр `domain` для корневого домена: `domain=site.com `. После этого все поддомены увидят такой файл cookie.

...Однако, если мы всё же хотим дать поддоменам типа `forum.site.com` доступ к куки, это можно сделать. Достаточно при установке куки на сайте `site.com` в качестве значения опции `domain` указать корневой домен: `domain=site.com`:
Например:

```js
// находясь на странице site.com
Expand Down Expand Up @@ -248,7 +251,10 @@ document.cookie = "user=John; secure";

Если это вам подходит, то добавление `samesite=lax`, скорее всего, не испортит впечатление пользователей от работы с сайтом и добавит защиту.

В целом, `samesite` отличная настройка, но у неё есть важный недостаток:
В целом, `samesite` отличная настройка.

Но у неё есть важный недостаток:

- `samesite` игнорируется (не поддерживается) старыми браузерами, выпущенными до 2017 года и ранее.

**Так что, если мы будем полагаться исключительно на `samesite`, то старые браузеры будут уязвимы.**
Expand Down

0 comments on commit 2d07497

Please sign in to comment.