Step 3 (S-44890)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14833/step/3

Step 3 (S-44890) 1.png

[00:00 - 00:15] итак как мы видели механизм авторизации обладает существенными ограничениями которые не позволяют его использовать а в широко доступных приложений а поэтому в протоколе


[00:15 - 00:32] был параллельно с этим разработан несколько другой подход основанный на так называемых а cookies это 2 а механизм поддержания а поддержания состояния то есть


[00:32 - 00:48] в принципе куки применяются не только для авторизации это более широкий механизм и начнем именно с обсуждение вот механизма то есть немножко вернусь к протоколу http поговорим про куки а после этого поговорим как на основе а куки


[00:48 - 01:03] построить гибкую систему авторизации пользователя итак что такое куки cookie это небольшие фрагменты данных которые а сохраняются на компьютере клиента


Step 3 (S-44890) 2.png

[01:03 - 01:20] то есть а в приложение прикинь сервер имеет возможность а каждому конкретному клиенту записать небольшой кусочек данных и браузер эти данные будет передавать при каждом запросе соответственно приложение


[01:20 - 01:34] и по этому небольшому кусочку мы в частности сможем проверить кем является текущий пользователь то есть с помощью кук поддерживается некоторое состояние поскольку они передаются при каждом


[01:34 - 01:53] приказ может быть и запросе а можно записать состояние связанное с текущим пользователем а кук то есть в этих данных помимо собственно самих данных есть разные атрибуты важнейшие из них это


[01:53 - 02:08] то есть куки cookie которые хранятся в браузере на диске у клиента они привязаны к какому то домен когда не отправляются


[02:08 - 02:26] на сервер браузер выбирают только те книги которые должен увидеть конкретный сервер то есть каждый сервер он поможет выставлять а куки только для себя и видеть только свои куки cookie из другого домена то есть из другого приложения а


[02:26 - 02:41] такой возможности нету поэтому впитывает надежный механизм управления сессиями надежная разделения между приложениями итак давайте поподробнее посмотрим какие атрибуты есть


Step 3 (S-44890) 3.png

[02:41 - 03:00] 1 основное это имеет значение то есть каждая кука обладает некоторым именем и некотором значении а субстанция хуки они так и записывается в заголовков и на равно значение


[03:00 - 03:15] есть ограничения на максимальную длину куки и есть ограничение на максимальное количество куки а некоторое время назад это были довольно часто ограничения то есть не больше 20 куб на 1 домен


[03:15 - 03:30] сейчас практически все браузеры подняли эти ограничения до очень большое значение то есть на практике вы вряд ли наткнетесь на ограничение по максимальному по максимальной длине а значение либо по максимальному количеству наук


[03:30 - 03:46] но тем не менее следует помнить что a cookie это все таки не способ хранения да это не потому что они передаются на каждый запрос и куки должна быть короткой значение относительно короткий


[03:46 - 04:01] имени и значение куки есть параметрах спас дата после которой кука не невалид то есть можно указать время жизни куки а


[04:01 - 04:19] положить на отличается от механизма авторизации то есть вы можете заказать куклу поставить на 1 день или бы там на 1 месяц а по умолчанию время жизни cookie если оно не задан оно определяется опять таки временем жизни окна браузера


[04:19 - 04:37] это так называемый а ну да она определяется временем жизни окна браузера то есть пока не закрыли но в разных браузерах поэтому желательно пару всегда явно указывает на то чтобы всегда знал


[04:37 - 04:54] как долго эти куки хранить следующий атрибут про которую говорили а этот домен с каждая кука привязана к домену сайта а по умолчанию


[04:54 - 05:11] домен соответствует домену сайт но сайта есть возможность немножко изменить например если сайт находится на да на домене 3 уровня премьер ваше приложение это а


[05:11 - 05:30] 1 сайт дот ком и а вы хотите выставить умолчанию у нее домен будет совпадать вот таки но вы можете его изменить и сделать например домен вот таких сайтов


[05:30 - 05:45] либо без точке сайт дот ком то есть домен нельзя подставлять произвольно он должен соответствовать тому домену на а


[05:45 - 06:02] котором работает ваше предложение но его можно менять его можно немножко понизим до 2 уровня следующий атрибут этот путь путь соответствуют так скажем локейшена в котором данная к будет видно


[06:02 - 06:19] то есть каждая кукол выставляется на какой то так скажем локейшен вы можете поставить ку которая будет видна только в административном отделе то есть по углам начинающемся слэш admin если вы поставите а равняется слэш admin


[06:19 - 06:38] будет видна только вот по таким урлам часто кусают на локейшен слэш чтоб она власть на нашем сайте и 2 важных атрибута которая относится безопасности в 1 очередь для кук использующихся в авторизации


[06:38 - 06:55] пользователей а флажок а флажок secure a secure означает то что данная штука должна передаваться только по протоколу http s то есть при запросов по обычному протоколу


[06:55 - 07:14] данная штука передаваться вообще не будет а ну это актуально на самом деле только для кукол в которых хранится вентилятор сесть и степи поля а он мне говорит о том что утки не доступны is a javascript


[07:14 - 07:31] а в языке javascript точнее и которая предоставляет браузер есть специальный специальная переменная а документ называется


[07:31 - 07:47] с помощью этой переменной а вы можете читать либо устанавливать куки для для данного домена из java скрипта а


[07:47 - 08:04] а java скриптом связана довольно большое количество то есть с выполнением кода на стороне клиента связано большое количество разного уязвимостей а поэтому был сделан такой флажок который делает кукол не доступные сжал скрипта то есть не получится прочитать ее значение


[08:04 - 08:21] критически важно итак а каким образом происходит установка и удаление для установки куки есть специальный заголовок то есть если сервер хочет установить


Step 3 (S-44890) 4.png

[08:21 - 08:37] на клиенте куку он возвращает заголовок set cookie заголовки сотку можно установить 1 куклу если вы хотите установить сразу 2 кучи мы должны вернуть 2 заголовка синтаксис следующей


[08:37 - 08:56] а значение строка в которой перечисляются имя куки ее значение и далее точка с запятой и разного рода атрибуты например домен


[08:56 - 09:12] путь secure пионы они все разделены точкой с запятой а собственно говоря для установки куки cookie а


[09:12 - 09:28] для удаление куки не специального метода это удаление куки разновидность установки используется такой прием делается вызов со скуки


[09:28 - 09:45] значение уже неважно expires устанавливается на какую то дату в прошлом то есть вы за вы устанавливаете значение куки примеру хотите удалить среди заново устанавливать значение куки а но expire оставить в прошлом


[09:45 - 10:00] когда браузер получая такой заголовок он тут же удаляет кукол потому что у нее время время жизни expires давно вышла заметим что в со скуки указываются все атрибуты то есть можно указывать некоторое можно указывать


[10:00 - 10:17] некоторые можно пропускать тогда они будут выставлены значения по умолчанию а каким образом браузер передает куки для этого используется заголовок куки cookie здесь просто куки


Step 3 (S-44890) 5.png

[10:17 - 10:33] а в этом заголовке передаются все куки сразу то есть когда браузер возвращает сервера он уже не передает их атрибуты то есть не передает не домен не путь а передает только


[10:33 - 10:52] имя и значение поэтому заголовке указывайте сразу несколько кук в данном примере мы видим 3 ку ку с 1 раз каким то значением куклу с именем лэнг и куст сарай а соответственно разные куки разделены


[10:52 - 11:07] а точка с запятой может разобрать заголовок cookie извлечь оттуда необходимое а тут нужно уточнить что


[11:07 - 11:25] браузер при каждом запросе выбирает только те книги которые он должен отправить отправляет они все таки вот только техники которые подходят под данный запрос по каким правилам браузер это делает это проще разобрать на примере


Step 3 (S-44890) 6.png

[11:25 - 11:41] допустим у нас есть вот такой урл сайт дотком и путь блок пост 12 а браузер выберет


[11:41 - 11:59] из всех кук те у которых во 1 не истек срок от спас то есть если если expires истек такие куклы никогда на сервер отправлены не будут не будут удалены а во 2 а выделить только текучим который подходит даме что значит подходят домен либо совпадает


[11:59 - 12:15] с доменом на которой идет запрос ну в точности совпадает либо является его суффикса то есть покупки установленный в домене более высокого уровня


[12:15 - 12:31] домен более высоком уровне они также будут возвращены но есть нюанс а важно чтобы была точка то есть когда устанавливается устанавливается кука ее можно поставить в домен точка site дот ком или в домен сайта вот


[12:31 - 12:46] те которые будут поставлены сайт дот ком они попадут только только на запросы поэтому домен а те которые поставлены точка site com они попадут сайт дот ком


[12:46 - 13:02] r sided com my upside дот ком это и так далее то есть выбираются все куки в которых является точка суффиксом для текущего домена


[13:02 - 13:19] а из этих куклы играются те у которых подходит путь то есть если у нас путь blog post 12 выбираются все куки у которых путь является префикса например


[13:19 - 13:37] слэш blog слэш blog post просто слэш понятно ну и поскольку на сайте теперь протокол проверяет штук не стоит флаг secure то есть а логика выбора понятно во 1 по домену во 2


[13:37 - 13:56] пути и в 3 проверяется флаг secure отвечает за удаления кук то есть все все устаревшие ссылки они не возвращаются вообще на север а вот общем то весь нехитрый механизм он позволяет серверу собственно говоря


[13:56 - 14:15] некоторое время хранить небольшой кусочек данных на клиенте кусочек возвращается с каждым запросом сервер может его использовать давайте посмотрим как а в частности организована работа с куками для этого есть за установки кук


Step 3 (S-44890) 7.png

[14:15 - 14:32] есть специальный метод set cookie объектов то есть после того как вы создали объекты что теперь вы можете вызвать они вас от qooqee в простейшем варианте вы должны передать 2 параметра имя и значение


[14:32 - 14:50] а атрибуты кук можно передавать в качестве дополнительных параметров функцию то есть вы можете указать домен путь а причем тут спайро с указывает заявитель строчки так вы видели а а в заголовке закупке


[14:50 - 15:04] дата устаревали sparse на виде довольно сложный строки а в виде объекта да то есть вот такой конструкции в питоне можно поставить фулку на 30 дней


[15:04 - 15:24] для удаления кук есть специальный метод для cookie ну это на самом деле шутка просто сокращение чтобы не нужно было выдумывать отрицательно expires давление делается вызвал 1 метода а


[15:24 - 15:43] при получении услуг все входящие cookie складываются специальные словарик request точка cookies ну с этим с это обыкновенный словарь языке python с ним можно работать известным способом то есть его можно просто индексировать можно вызывать метод get


[15:43 - 15:53] и тогда вы получите передавать название книги получится значение этой куки либо если ее не было перед здесь все довольно просто