Готовить ie или локальное хранилище? - PullRequest
0 голосов
/ 24 апреля 2020

Справочная информация: у меня есть два приложения, веб-интерфейс и бэкэнд. Backend это django с django rest framework. Для аутентификации я использую токен. Поэтому, когда клиент входит в систему, он запрашивает токен из бэкэнда через post. Клиент устанавливает этот токен на header и сохраняет токен в localStorage. Я сохраняю токен в localStorage, чтобы пользователь не мог сделать второй запрос после повторного открытия сайта. Но я написал много статей, в которых было написано, что localsStorage уязвим и подвержен атакам xss. А теперь я говорю о cookie. Но я не хочу переписывать свою бэкэнд логи c. И я думаю написать токен повару ie через js.

Мой вопрос: я должен написать токен в cookie? Или я должен переписать свое серверное приложение и использовать сессии? Или м.б. оставить как есть?

1 Ответ

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

Как файлы cookie, так и локальное хранилище одинаково подвержены подделке на стороне клиента: клиент может видеть и изменять оба, а также любые (возможно, злонамеренные) расширения, которые они имеют. Но если соединение с вашим сайтом осуществляется по протоколу HTTPS, а в его браузере / ОС / оборудовании нет каких-либо вредоносных программ, то не должно быть проблем ни с файлами cookie, ни с локальным хранилищем.

Основной Разница между ними заключается в том, что файлы cookie отправляются на сервер при каждом сетевом запросе, тогда как локальное хранилище остается на жестком диске пользователя и не отправляется на сервер.

Возможно, файлы cookie - это немного больше уязвимо, чем локальное хранилище, потому что если повар ie отправляется по незашифрованному соединению, он может быть перехвачен - но локальное хранилище остается на компьютере клиента, поэтому вероятность его перехвата каким-либо вредоносным кодом меньше. Но если соединение зашифровано, что должно , использование файлов cookie будет приемлемым.

Если ваш сценарий требует, чтобы токен отправлялся с запросами на сервер, вам, вероятно, следует использовать файлы cookie. так что вы можете проверить их на своем бэк-энде. (Если вместо этого вы используете локальное хранилище, вам придется вручную отправлять токен с каждым запросом, что все еще возможно, но немного нелегко, учитывая, что куки могут делать то же самое, не требуя ручного вмешательства с вашей стороны.)

Если ваш сценарий не требует, чтобы токен отправлялся при каждом запросе, тогда вы можете использовать локальное хранилище, если хотите. Если серверу никогда не нужно видеть токен после того, как он был сгенерирован, то не используйте куки-файлы, так как это приведет к ненужным накладным расходам без всякой причины.

Тот же общий лог c выше применимо к любым данным на стороне клиента. Если серверу часто или иногда нужно это видеть, файлы cookie - хороший выбор, если данные не слишком велики. Если серверу никогда не нужно это видеть, куки - неправильный выбор.

...