Файл куки не найден что делать
Включение файлов cookie
Для правильной работы Lync Web App включите в браузере файлы cookie. Чтобы узнать, как это сделать, выберите в списке нужный браузер.
Браузер
Internet Explorer
Выберите Пуск > Панель управления.
Совет: В классическом представлении Windows XP выберите Пуск > Настройка > Панель управления.
Дважды щелкните Свойства обозревателя.
Выберите Конфиденциальность > Дополнительно.
В диалоговом окне Дополнительные параметры конфиденциальности установите флажок Переопределить автоматическую обработку куки-файлов.
В разделе Основные куки-файлы выберите параметр Принимать или Запрашивать.
В разделе Посторонние куки-файлы выберите параметр Принимать или Запрашивать.
Mozilla Firefox
Если вы используете операционную систему Windows, в окне Firefox выберите Инструменты > Настройки.
Совет: Если вы используете операционную систему Mac OS, откройте раскрывающийся список Firefox и выберите пункт Настройки.
Выберите вкладку Приватность.
В раскрывающемся списке Firefox: выберите пункт будет использовать ваши настройки хранения истории.
Установите флажок Принимать куки с сайтов.
Установите флажок Принимать куки со сторонних сайтов и нажмите кнопку ОК.
Safari
Если вы используете операционную систему Windows, нажмите Сервис > Настройки.
Совет: Если вы используете операционную систему Mac OS, в меню Safari выберите пункт Настройки.
В диалоговом окне выберите вкладку Конфиденциальность.
В разделе Блокировать файлы cookie выберите параметр Никогда.
Нажмите кнопку Закрыть и обновите страницу в браузере.
Chrome
На панели инструментов щелкните значок гаечного ключа.
Выберите Настройки > Показать дополнительные настройки.
В разделе Личные данные нажмите кнопку Настройки контента.
В разделе Файлы cookie выберите Разрешать сохранение локальных данных (рекомендуется).
Закройте вкладку Настройки и обновите страницу в браузере.
Чем опасны куки и как удалить их на Android
Куки. Об их существовании знают все, потому что неоднократно могли видеть, как сайты запрашивают разрешение на их сохранение. Однако далеко не все имеют представление о том, зачем они вообще нужны и какую роль играют для нашей с вами безопасности. Google не уделяет этому особенного внимания, но Apple старается донести для своих пользователей, что в целом куки – это довольно опасный инструмент, который может использоваться для слежки. А раз так, лучше знать, как себя обезопасить. Так, на всякий случай.
Куки — это файлы, которые позволяют сайтам отслеживать ваши перемещения в интернете
Куки, или cookies – это небольшие объёмы данных по типу файлов кэша, которые сайт сохраняет на устройстве пользователя и использует их для установления его личности. Это своего рода метка, которая позволяет безошибочно определить конкретного посетителя, вне зависимости от того, проходил он авторизацию или нет. Именно благодаря кукам интернет-магазины позволяют вам накидать товаров в корзину, не выполняя вход в свой аккаунт, и не удаляют их, даже если вы закрываете сайт.
Как удалить куки в Chrome
Но если сохранение товаров в корзине даже после закрытия – это пример положительного использования куков, то есть и отрицательные. Например, куки способствуют межсайтовому отслеживанию, позволяя разным веб-ресурсам фиксировать ваши перемещения в интернете, ваши покупки и поисковые запросы. Это может нравиться не всем, а потому лучше уметь удалять куки:
В Chrome можно легко и просто удалить куки
Куки в Chrome удаляются вместе с другими данными, что не очень-то удобно
Настройки Google Chrome позволяют удалять куки за разные временные промежутки. Это может быть последний час, сутки, неделя, месяц или всё время. Особенно здорово, что браузер автоматически определяет часто посещаемые сайты и предлагает сохранить те куки, которые они сохранили. Тем самым он как бы делает для них исключение, предполагая, что пользователю могут потребоваться куки и другие данные. Всё-таки помимо куков, это действие удаляет ещё и другие данные, выбрасывая вас из всех аккаунтов.
Как запретить куки на Android
Честно сказать, это не очень удобно. Поэтому, если вы переживаете за свою конфиденциальность, вам придётся отказаться от Google Chrome в пользу другого веб-браузера. Но поскольку на Android нет Safari, я отдаю предпочтение DuckDuckGo (скачать). Это не только поисковая система, но и браузер, в основе которого лежит защита пользовательских данных. Он автоматически удаляет куки и не позволяет сайтам отслеживать ваши перемещения по интернету. Всего-то и нужно, что скачать DuckDuckGo Browser и назначить его браузером по умолчанию.
Впрочем, при необходимости у вас есть возможность заставить DuckDuckGo хранить ваши куки. Для этого браузер предлагает специальную надстройку, которая позволяет сделать сайт «огнеупорным».
DuckDuckGo удаляет куки автоматически, но это можно отключить
С этого момента браузер будет спрашивать вашего разрешения на сохранение куков при входе на каждый сайт в отдельности. Если вы не хотите, чтобы он надоедал вам постоянными оповещениями, вы можете там же добавить в избранное сайты, которым разрешено по умолчанию сохранять свои куки на вашем устройстве без последующего удаления. Это может быть нужно для использования тех же интернет-магазинов, если вы имеете обыкновение не проходить авторизацию, а время от времени накидывать в корзину товары, которые хотели бы заказать как-нибудь потом.
Постоянные файлы cookie не делятся между Internet Explorer и Office приложениями
Приложение Internet Explorer 11 для ПК будет выведено из использования и снято с поддержки 15 июня 2022 г. (список других вопросов, см. в разделе Вопросы и ответы). Те же приложения и сайты IE11, которые вы используете сегодня, могут открываться в Microsoft Edge режиме Internet Explorer. Подробнее см. здесь.
В этой статье данная статья содержит сведения об устранении проблем, когда офисные приложения взаимодействуют с веб-сервером, чтобы между ними не были разделены постоянные файлы cookie.
Оригинальная версия продукта: Internet Explorer 9
Исходный номер КБ: 932118
Симптомы
Начиная с Windows Vista, если вы используете гиперссылки для открытия Microsoft Office документов в Internet Explorer (начиная с версии 7), у вас могут возникнуть следующие симптомы.
Отсутствие сохраняющихся файлов cookie
Когда Office приложения взаимодействуют с веб-сервером, они не отправляют на веб-сервер стойкие файлы cookie, сохраненные internet Explorer. Это поведение может привести к следующим ситуациям для веб-приложения, которое ожидает этих файлов cookie:
Отсутствие временных файлов
Содержимое, загруженное Internet Explorer, как представляется, отсутствует в кэше временных файлов. В этой ситуации могут возникнуть следующие симптомы:
Поэтому поведение веб-приложения может быть изменено.
Запросы проверки подлинности или перенаправления на странице с логотипом
В следующих сценариях некоторые решения single Sign-On (SSO), которые зависят от настойчивых файлов cookie для повышения осведомленности о кросс-приложениях, могут работать не так, как ожидалось:
Поэтому эти решения SSO могут подсказыть пользователю сведения о проверке подлинности. Кроме того, эти решения SSO могут перенаправлять пользователя на страницу с логотипом форм.
Причина
Начиная с Windows Vista, Internet Explorer (начиная с версии 7) представляет новую функцию защиты зоны безопасности, которая называется Защищенный режим. Этот дополнительный уровень безопасности устанавливает изолированное расположение кэша для файлов, которые сохраняются веб-страницами в защищенной зоне безопасности, а также для сохраняющихся файлов cookie, которые сохраняются веб-страницами в этой зоне безопасности. Это альтернативное расположение кэша изолировано от обычного кэша, используемого локальными и доверенными сайтами. Поэтому сайты с низким уровнем доверия не могут записывать содержимое в папку, доступную другим приложениям, которые работают на более высоком уровне доверия, чем Internet Explorer. Эта ситуация помогает сделать Internet Explorer более безопасным в Windows Vista, Windows 7 и выше. Однако эта ситуация приводит к изоляции в Internet Explorer и более высоком уровне:
По умолчанию защищенный режим включен в Internet Explorer 7 и выше для следующих зон:
По умолчанию защищенный режим отключен в Internet Explorer 7 и выше для зоны доверенных сайтов.
Чтобы получить доступ к защищенным режимам в Internet Explorer, щелкните Параметры Интернета в меню Tools и нажмите кнопку Безопасность. Защищенный режим включен или отключен в зависимости от зоны.
Внешние приложения, которые используют API Microsoft Windows (WinINet) продолжают использовать регулярное расположение кэша. Эти приложения используют это расположение кэша, даже если веб-контент, с которым они работают, находится в зоне с включенной защитой режима. Это поведение вызывает проблему совместимости для существующих веб-клиентов. Однако такое поведение препятствует эффективному обмену данными кэша между Internet Explorer и Office.
Решение
Чтобы устранить эту проблему, добавьте веб-сайт, с которым вы испытываете эти симптомы, в список надежных сайтов.
По умолчанию Internet Explorer 7 и более не использует изолированное расположение кэша для защищенной зоны безопасности. Поэтому, когда вы делаете сайт надежным сайтом, вы позволяете Веб-службе сохранять постоянные файлы cookie и временные файлы в обычный кэш. В этом расположении для приложений доступны постоянные файлы cookie и временные файлы Office.
Вы можете включить защищенный режим для зоны доверенных сайтов с помощью диалоговое окно Параметры Интернета. Однако, если вы примете это действие, эта проблема может вновь появиться. Поэтому, если вы хотите, чтобы это решение работало, необходимо оставить режим protected disabled для зоны доверенных сайтов.
Статус
Такое поведение является особенностью данного продукта.
Когда Internet Explorer 7 и выше выполняется в защищенном режиме, Internet Explorer выполняется под уменьшенным маркером безопасности. Этот маркер ограничивает возможность доступа Internet Explorer к ресурсам на компьютере. Изолированный кэш — это единственное понятное расположение, которое internet Explorer имеет при запуске в защищенном режиме. Internet Explorer намеренно изолирован от приложений, работающих под обычным маркером безопасности. Это поведение предотвращает случайное повышение прав пользователей, если Internet Explorer становится скомпрометирован. Однако это увеличение изоляции происходит за счет менее бесшовного взаимодействия с другими приложениями, такими как Office.
Дополнительная информация
Эта проблема также может затронуть клиентов, использующих Microsoft Office SharePoint 2007 г. вместе с проверкой подлинности SSO. SharePoint Проверка подлинности SSO зависит от настойчивых файлов cookie для проверки подлинности между приложениями. Таким образом, пользователи могут видеть больше запросов на проверку подлинности, чем они ожидают. Чтобы устранить эту проблему, используйте решение, упомянутое в разделе «Разрешение».
Дополнительные сведения об использовании проверки подлинности SSO вместе с Office SharePoint Server 2007 и о восприимчивости проверки подлинности SSO к этой проблеме при совместном использовании проверки подлинности SSO см. в странице Plan authentication settings for Web applications in Office SharePoint Server.
Что делать с cookie-файлами
Все, что вы хотели знать о куках, кукисах, веб-cookie или просто печеньках.
Случалось ли, что вы зашли на сайт какого-нибудь интернет-магазина — и сразу же обнаружили в своей корзине товары, которые забыли купить в прошлый раз? Или снова зашли во «ВКонтакте» — а вы, оказывается, уже залогинены? Замечали ли вы когда-нибудь, что рекомендованные статьи на новостном сайте каждый раз меняются, если вы кликаете на определенные ссылки? Здесь нет ничего удивительного: все эти сайты, как и многие другие, используют cookies, чтобы запомнить вас.
Благодаря таким удобствам наша онлайн-жизнь становится чуть лучше и человечнее. При этом cookie-файлы также помогают маркетологам отслеживать вашу онлайн-активность, чтобы рекламодателям было проще показывать рекламу подходящей аудитории.
Однако, пускай cookie-файлы и делают жизнь чуть приятнее, они не всегда так уж хороши для вас. Термин веб-cookie не имеет прямого отношения к печенькам (от англ. «cookies»), но с точки зрения пользы определенная аналогия есть: как и их «собратья» из мира выпечки, веб-cookie в больших количествах не могут быть полезными.
Как добиться баланса?
Как же можно добиться оптимального сочетания удобства и приватности? Начните с простого разделения на основные и сторонние cookie-файлы. Основные cookie-файлы действуют только в пределах своего сайта. Если вы ушли с сайта, cookie не будут следить за вами. Основные cookie только записывают ваши предпочтения на конкретном сайте и в большинстве случаев нужны для запоминания учетных записей.
Но сторонние cookie-файлы этим не ограничиваются. Сторонний cookie может принадлежать рекламодателю, размещающему рекламные объявления на нескольких сайтах, которые вы посещаете. Он знает, что, например, вы заходили на Amazon в поисках ноутбука. Теперь же, если вы попадаете на другой сайт, где данный рекламодатель размещает рекламу (например, сайт какого-нибудь издания), вы увидите рекламу того же самого ноутбука, который вы искали на Amazon. Или рекламу того, что там же искал ваш супруг (супруга). Или, скажем, ваш супруг (супруга) может сесть за тот же компьютер, зайти на Facebook и увидеть, что вы хотели купить ему (ей) на день рождения, испортив сюрприз.
На самом деле это еще наименее раздражающие аспекты сторонних cookie-файлов. Давайте не будем забывать, что информация о вас не исчезает, а накапливается в базах данных, на основе которых неизвестные вам организации составляют ваш полный портрет, чтобы использовать его для собственной выгоды. При этом им по большому счету абсолютно плевать на ваше право на частную жизнь.
Помимо этого cookie могут быть сессионными и постоянными. Сессионные cookie следят за пользователем, пока он находится на определенном сайте. Поменяйте язык на сайте — и другие страницы сайта также будут отображаться на этом языке. Если на следующий день вы вернетесь на этот сайт, вам, возможно, снова придется менять язык — когда вы закрываете браузер, сессионные cookie удаляются.
Постоянные cookie живут в вашем компьютере до тех пор, пока срок их жизни не истечет или пока вы их сами не удалите.
О cookie-файлах можно говорить еще долго, но самое важное, что вы должны понять, — это как их контролировать. Можно управлять cookie-файлами через настройки браузера. В этом случае «контролировать» означает «удалять». Вы можете либо вручную удалять их время от времени, либо делать это через интерфейс истории браузера, либо изменить настройки таким образом, чтобы cookie удалялись автоматически. По ссылкам мы приводим подробные инструкции для Google Chrome, Mozilla Firefox и Microsoft Edge или Internet Explorer.
Как управлять cookie-файлами в Google Chrome
Как управлять cookie-файлами в Mozilla Firefox
Как управлять cookie-файлами в Microsoft Edge или Internet Explorer
В Internet Explorer:
В Edge:
Здесь мы должны отметить, что при удалении всех веб-cookie вы автоматически снимете все свои галочки «Запомнить меня» на посещенных сайтах, включая сайты, поддерживающие двухфакторную аутентификацию. Это цена, которую вы платите за приватность.
«Осторожно, печеньки!»: советы начинающим тестировщикам в сфере безопасности
Привет, меня зовут Вика Бегенчева, я QA-инженер в Redmadrobot. Я расскажу, как злоумышленники крадут наши данные, и что можно сделать, чтобы от этого защититься.
Термин «тестирование безопасности» звучит довольно серьёзно. Многие боятся погружаться в эту тему, думая, что их ждут непроходимые дебри из непонятных слов, сложной литературы и загадочных аббревиатур. Я разберу основы тестирования безопасности и вы убедитесь, что на самом деле это просто и интересно.
Статья написана для начинающих тестировщиков безопасности и тех, кому непонятно, что за «фрукты» эти хакеры и чем они там занимаются. Мы рассмотрим примеры самых частых уязвимостей и постараемся разобраться, как грамотно проверить проект на слабые места и сформировать у себя образ мышления, который в дальнейшем станет вашим верным помощником в тестировании.
Что хранят cookie
Допустим, мы зашли на сайт интернет-магазина ошейников для собак и выбрали французский язык (почему бы и нет). Добавили в корзину пару шлеек и поводок. Что будет, если мы закроем вкладку и зайдём на сайт снова? Всё останется прежним: интерфейс на французском и три товара в корзине. Магия? Нет, cookie.
Cookie — один из инструментов, который формирует так называемый фингерпринт каждого пользователя в сети. Его можно сравнить с «отпечатком пальца», по которому можно узнать, что за человек покупает ошейник для собаки.
На вашем устройстве есть текстовый файл, в котором содержится различная информация о пользователе для каждого сайта — cookie. Она хранится для разных целей, в том числе и для удобства пользования сайтом. Cookie бывают временные (cookie-сессии) и постоянные. Давайте взглянем на них поближе.
Открываем панель разработчика в Chrome и переходим на рандомную статью на «Хабре». Во вкладке Network находим первый запрос, и в хедерах видим как проставляются cookie:
«Хабр» в Chrome
И в респонсе (ответе) видим cookie:
Set-Cookie: fl=ru; expires=Fri, 25-Feb-2022 08:33:31 GMT; Max-Age=31536000; path=/
Тут уже работает логика и Google (если очень нужно): cookie типа fl=ru (параметр, вероятно, отвечающий за язык) или те, которые хранят товары в корзине — постоянные cookie. Они не меняются, если пользователь их не трогает. Нас же интересуют временные или сессионные cookie. Они хранят информацию, которая помогает сайту понять, что это всё тот же пользователь в текущей сессии.
Например, при авторизации на сайте, в файл cookie проставляется условный session_id — уникальный идентификатор сессии на данный момент времени, к которому привязаны текущий браузер и пользователь.
Когда мы совершаем действия, доступные только этому пользователю, мы отправляем в хедер запроса (заголовок запроса, в него передаётся способ общения с сервером) и данные, которые локально сохранили в cookie, чтоб подтвердить, что это мы, а не условный программист из Финляндии. Временные cookie имеют срок годности и стираются в конце сессии, или становятся неактуальными с течением времени.
Как понять, что ваши данные в опасности
Если хакеру удастся угнать cookie пользователя, то он сможет действовать от его лица или же просто получит конфиденциальную информацию юзера. Как узнать, всё ли впорядке?
Во-первых, нужно проверить, не хранятся ли пароли от сайтов в cookie. Удивительно, но в 2021 году до сих пор существуют сайты, которые это делают. Информация о сессиях должна иметь ограничения — быть временной или заменяться с каждой новой сессией.
Во-вторых, нужно проверить, чтобы все конфиденциальные cookie были с флагом httpOnly и secure.
Cookie с флагом “secure” передаются на сервер только по протоколу HTTPS. Как правило, в этом случае есть сертификат SSL или TLS. Cookie с флагом “httpOnly” защищены от манипуляции JavaScript через документ, где хранятся cookie.
Открываем в Chrome «инструменты разработчика» и переходим во вкладку Application.
Проверяем, не хранятся ли пароли в LocalStorage в этом же разделе «инструментов разработчика».
Теперь рассмотрим сценарии кражи пользовательских данных и как от них защититься.
HTTP и HTTPS
Гуляя по сайтам мы до сих пор встречаем предупреждения браузеров о «незащищённом соединении». Иногда строгий браузер вообще не пускает нас на сайт, потому что не хочет нести за него ответственность. А чего он боится?
А боится он протокола HTTP — он древний и небезопасный. Все современные сайты общаются по протоколу HTTPS и вот их браузер любит. Разница между HTTP и HTTPS всего в одной букве, но эта буква означает много — «Secure». Безопасность передачи данных — главный приоритет современных браузеров.
Сайты, которые общаются с сервером по протоколу HTTPS, используют сертификат TLS (его предшественник — SSL). Такой сертификат может защищать как один домен, так и группу поддоменов.
Вернёмся в магазин — мы решили всё-таки купить ошейник своей собаке. Переходим в корзину, вводим данные банковской карты для оплаты, нажимаем на большую кнопку «Оплатить» и наши данные улетают на сервер для обработки запроса. Допустим, злоумышленники решили перехватить данные нашей банковской карты в момент отправки запроса.
Если сайт общается по протоколу HTTPS, то между магазином и сервером построен безопасный «мост». SSL-сертификат позволяет шифровать данные нашей карты и преобразует их в нечитаемый набор символов.
На этом моменте все хакеры мира грустят, потому что они знают, что расшифровать данные может только сервер. На нём есть ключ дешифратор, который поможет понять, какие данные мы ввели на сайте и правильно их обработать.
Чтобы защититься от кражи данных, убедитесь:
Что сайт общается через HTTPS, а не через HTTP.
Есть редирект с http:// на https:// — злоумышленник может разместить ссылку с http://, тогда данные можно будет угнать. Редирект насильно переводит пользователя на https:// ради его же блага. И все счастливы.
Brute force атаки
Допустим, в нашем любимом магазине ошейников для питомцев есть админка. Владелец сайта решил оставить ссылку админки по адресу “https:// […].com/admin”. Злоумышленник переходит по этому адресу и его ждёт страница входа в панель администратора. Допустим, наш хакер вводит логин «admin», а пароль подбирает с помощью скрипта, который сам будет перебирать пароли.
Если логин верный, то узнать пароль дело нескольких часов. Запустил скрипт на ночь, лёг спать, а утром уже есть доступ к панели администратора. Такой перебор и есть brute force атака.
Защититься от взлома можно несколькими способами (про авторизацию/аутентификацию и oauth2 мы поговорим ниже). Но, если речь идёт о brute force атаке, то простейшая защита тут — установка лимита на попытки ввода пароля.
Лимиты устанавливают в зависимости от специфики продукта и решения проектной команды:
ограниченное число попыток в единицу времени;
ограниченное число попыток с последующей блокировкой функционала (например, с восстановлением доступа через почту когда попытки закончились);
установление тайм-аута после n попыток ввода.
Естественно, это не избавит от всех проблем, но сильно усложнит жизнь злоумышленнику.
Токены и сессии
Давайте представим, что мы захотели вступить в тайный клуб любителей настольных игр. Туда просто так не попасть. Сначала нужно доказать, что мы подходим на роль члена клуба — любим настолки.
Итак, в клубе знают наше имя и фамилию, мы доказали, что любим игры, и теперь нам выдадут специальный пропуск, по которому мы сможем проходить в здание закрытого клуба. Теперь не нужно каждый раз доказывать, что мы — это мы. У нас есть волшебный ключ-пропуск, который открывает двери тайного клуба.
А что будет, если наш пропуск-ключ украдут? По нему просто войдут в здание и узнают все секреты закрытого клуба. Токены сессии — это ключи к ресурсам нашего сайта. Когда мы логинимся на сайте, мы отправляем запрос на авторизацию/аутентификацию пользователя. На сервере проверяются его права и генерируется токен.
Access-token определяет права пользователя и доступность ресурсов для него. Выглядит он как длинный набор символов. Можно сказать, что токен — тот самый пропуск, который нам выдали в нашем тайном клубе.
При каждом следующем обращении к ресурсам теперь нам не нужно вводить логин и пароль, чтоб доказать, что мы имеем право на доступ. Просто в каждым запросе на ограниченный ресурс отправляем наш пропуск — access-token.
Хорошей и частой практикой является использование время жизни токена. После логина и формирования access-токена, фиксируется время жизни – дата, до которой токен считается действительным. Это как абонемент на месяц в тайный клуб.
На разных ресурсах, требования ко времени жизни токена разные. На одном сайте токен живёт год, а на другом — всего лишь час. После того как срок действия токена истечёт, система попросит пользователя снова авторизоваться. Чтобы не вводить всё время логин и пароль после истечения access-токена, придумали refresh-токен.
У refresh-токена только одна цель — обновлять access-токен. Это работает так:
отправляем запрос на закрытый ресурс с истекшим аксесс-токеном;
сервер возвращает ошибку о «протухшем» токене;
клиент видит эту ошибку и сразу формирует запрос на обновление аксесс-токена;
в хедеры этого запроса проставляется значение рефреш-токена;
сервер сверяет рефреш-токен с базой данных, формирует новый аксесс-токен и отправляет его обратно на клиент;
клиент автоматически повторяет запрос на закрытый ресурс уже с новым аксесс-токеном.
Готово! А пользователи сайта даже ничего не увидели и не поняли. Как этим пользуются хакеры?
Access- и refresh-токены – это токены сессии. Если злоумышленнику удастся перехватить их, то он докажет, что он — это мы, просто подставив в запрос. Он получит доступ к нашим ресурсам и сможет совершать действия от нашего имени.
Чтобы защититься, нужно:
проверить, что токены сессии не хранятся в файлах Cookie или LocalStorage;
убедиться, что все запросы с токенами передаются по зашифрованному HTTPS;
проверить, что нет доступа к ресурсу без предъявления токена — отправить запрос без токена;
проверить, что нет доступа с чужим токеном, а также проверить запросы с несуществующим токеном;
проверить запросы с истекшим токеном;
поменять в базе данных вручную время жизни токена (продлить/просрочить);
удалить access-token токен из базы данных и отправить запрос.
Авторизация и аутентификация
Чтобы обеспечить безопасность системе и разрешить взаимодействовать с ней разным ролям пользователей (админы, модераторы и т.д.), важно понимать различия между авторизацией и аутентификацией.
Аутентификация — это проверка на соответствие заявленного имени пользователя (паспорта) с идентификатором в системе (Лаврентий Куашников). Авторизация — это предоставление нам прав в соответствии с нашей ролью в системе (отдельная комната для спикера).
Вернёмся к примеру с админкой нашего магазина ошейников. Снова переходим по адресу админки и нас ждёт страница с вводом логина и пароля. Логин — это идентификатор пользователя в системе. Пароль — это доказательство пользователя, что он — это он (ведь только он может знать пароль).
Когда в запросе мы отправляем эти данные, сервер проверяет их на соответствие — это аутентификация. Если аутентификация прошла успешно, то сервер смотрит в базе данных на нашу роль в системе и какие возможности у нас есть — это авторизация.
В разных сервисах авторизация и аутентификация могут проходить как одновременно, так и по отдельности. В первом случае при входе в админку у нас проверяется сразу как пароль, так и разрешение на переход в панель управления сайтом. Во втором случае авторизация проходит тогда, когда уже аутентифицированный пользователь пытается что-то изменить в системе.
А ещё наш сервер умный, и он знает, как реагировать на ошибки авторизации/аутентификации. У него есть два кода ошибок:
401 — если логин/пароль не совпадают или если для доступа к ресурсу нужна аутентификация;
403 — когда сервер понял, что за юзер к нему ломится, но отказывает ему в доступе.
Если хакер доказал, что он — это мы, то система примет его с распростертыми объятиями. Злоумышленник получит доступ к информации и действиям, доступным только нам.
Самый простой способ помочь хакеру пройти авторизацию в системе — передать логин и пароль в запросе в незашифрованном виде. Ну и хранить информацию в cookie, конечно. Но мы не хотим помогать хакерам. Так что делать?
Есть ряд проверок, которые снижают вероятность взлома:
проверьте, что пароли авторизации не хранятся в cookie. Токены – хранятся только в httpOnly куках;
все запросы, где используется авторизация, передаются по зашифрованному соединению https.
Также проверьте пользовательский доступ к ресурсам с кэшем страницы:
Авторизуйтесь в системе.
Откройте ту же страницу в соседней вкладке, при этом пользователь должен быть авторизован.
Разлогиньтесь из второй вкладки.
Вернитесь на первую вкладку (кэш сайта покажет, что вы ещё в системе).
Попробуйте перейти на страницу с ограниченным доступом из первой вкладки, например, в личный кабинет.
Доступ должен быть запрещён. То же самое проделайте при условии, что вы не просто вышли во второй вкладке, а зашли под другой учётной записью.
Проверьте также время жизни токенов в системе. Можно попросить разработчика поменять время жизни на 3 минуты, вместо 7 дней. Также можно попросить поменять время сервера. Но время жизни токена в любом случае должно быть ограничено.
Отправьте запрос без хедеров авторизации.
Отправьте запрос с чужими значениями параметров авторизации.
Проверьте запрос с истекшим токеном или с тем же токеном после логаута (после логаута токен должен стать недействительным).
Проверьте, чтобы логин/пароль не передавались в параметрах запроса. Пример, как не нужно передавать логин/пароль в параметрах http запроса: “http://site.ru/page.php?login=testqa&password=12345678”.
Так же в некоторых системах с повышенными требованиями к безопасности можно применять дополнительные опциональные проверки. Первое, что мы можем сделать, так это можно проверить авторизацию при смене пароля:
Авторизуйтесь в системе в одном браузере.
Авторизуйтесь в системе в другом браузере (или во вкладке «инкогнито»).
Смените пароль в системе через первый браузер.
Проверьте доступ к ресурсам на втором браузере.
Тут мы проверяем, достаточно ли системе только сохранённых данных в cookie. При смене пароля все токены должны быть недействительными.
Второе: можно проверить наличие и работоспособность функции «Выход со всех устройств». При этом запросе мы говорим серверу, что аннулируем все действительные токены, кроме текущего.
Третье: проверьте наличие постоянного тайм-аута сессии (Session-Timeout), они бывают нескольких видов. Наличие постоянного тайм-аута запрещает доступ к ресурсу через n минут после авторизации. Наличие динамического тайм-аута запрещает доступ к ресурсу через n минут после последнего запроса. Другими словами, динамический тай-маут закрывает доступ из-за вашего бездействия в системе.
И напоследок, не забудьте проверить, доступна ли двухфакторная аутентификация на сайте.
Двухфакторная аутентификация
Если в вашей входной двери есть замок только одного типа, то грабителю нужна только одна отмычка (отмычка одного типа). Если же у вас есть ещё и дополнительная защита (цепочка, навесной замок, собака), то грабителю будет сложнее вас ограбить. Скорее всего он передумает.
Так работает и двухфакторная аутентификация. У нас есть основной замок — логин и пароль. И у нас есть второй тип защиты — чаще всего это код, приходящий по SMS, электронной почте или отображаемый в программе двухфакторной аутентификации (например, в Google Authenticator).
Ещё неплохой практикой является использование на сайте протокола oAuth2. Простыми словами, oAuth2 — это когда мы авторизуемся в одном сервисе с помощью другого. Например, когда регистрируемся/логинимся на сайте с помощью Gmail.
Схема примера работы oAuth2
SQL-инъекции кода
Давайте немного углубимся через ещё одну аналогию. Допустим, мы работаем официантом в элитном ресторане. Гости периодически просят изменить состав блюд. Официант отмечает, какие изменения внести в меню.
Недобросовестный официант анализирует и понимает, что на кухне не раздумывая выполняют любой запрос. Поэтому можно внести свои собственные изменения в заказ и повара безоговорочно приготовят блюдо. И он пишет на очередном рецепте:
«ДОБАВИТЬ перец И УБРАТЬ сахар».
Вот и всё. Пранк удался. Но мы на стороне добра, так что вместо того, чтобы заменять заказ, мы проверим, как на кухне умеют фильтровать изменения. Как этим пользуются хакеры? SQL injection — это намеренное внесение в базу данных извне. В нашем примере, кухня — это база данных. SQL-запросы — заказы от официантов.
Схема заражения
Если у базы данных нет фильтрации запросов, то злоумышленник может манипулировать данными: получать данные пользователей (в том числе логин и пароль), размещать файлы, заменять значения. Как же злоумышленник может отправлять такие запросы? Это можно сделать через параметры HTTP, добавив в адресной строке параметры:
“http://some.site.ru/test/index.php?name=1′ UNION SELECT 1,2,3,4,5 —+ &password=1234”
Не углубляясь в то, как мы можем сами попробовать хакнуть свою базу данных, разберёмся в причинах уязвимости и посмотрим, как можно защититься.
Во-первых, в запросе должно быть экранирование спецсимволов — игнорирование исполняемым кодом спецсимволов, которые используются в синтаксисе языка программирования. Если один из спецсимволов пропал, то сервер воспринимает его, как часть команды — уязвимость есть.
Во-вторых, проверяем, чтобы при намерено кривом запросе не выводились ошибки, через которые можно сделать выводы о составе базы данных. Например, ошибка “Unknown column ‘4’ in ‘order clause’” говорит о том, что данные из таблицы выбираются по трём колонкам или меньше.
Сегодня существует множество фреймворков и библиотек, которые предоставляют защиту от SQL-инъекций. Например, библиотека node-mysql для node.js.
XSS расшифровывается как “Cross-Site Scripting”. Эта уязвимость входит в список OWASP TOP-10. Её смысл в том, что злоумышленник принудительно внедряет JavaScript-код через инпут на сайте: в поле ввода «пушит» код, который сохраняется на странице. Впредь он будет исполняться каждый раз при вызове страницы. Это происходит потому, что на сайте отсутствует экранирование спец символов.
У хакера много вариантов воспользоваться этой уязвимостью: от отображения алерта (всплывающего окна) с рекламой до кражи cookie и редиректа на сайт-зеркало.
Не забывайте, что проверять наличие уязвимостей на чужом сайте по законодательству РФ (и многих других стран) запрещено. Это воспринимается, как попытка намеренного причинение вреда сайту. И что тогда делать?
После этого вводим в инпуты строку:
Это универсальная проверка сразу на несколько кейсов. Если часть символов исчезла (например, в поле поиска) или не записалась в БД (если это поле имени пользователя при регистрации, например), то уязвимость есть. Все символы не должны восприниматься, как часть исполняемого поля. Если часть символов исчезла (например, в поле поиска) или не записалась в БД (если это поле имени пользователя при регистрации, например), то уязвимость есть. Все символы не должны восприниматься, как часть исполняемого поля.
В конце вводим скрипт или спецсимволы в окно фронтенда — вставляем прям в код сайта через dev tools в браузере.
Напутствие
Мы рассмотрели лишь несколько уязвимостей из множества существующих. Но это поможет войти в прекрасный мир тестирования безопасности. Чтобы ничего не забыть, мы с железными тестировщиками подготовили чеклист.
Думай, как хакер! Пытайся получить выгоду или навредить. Но только на своём проекте. Следи за новостями безопасности. Смотри реестр уязвимостей, читай статьи, которые пишут фирмы по обеспечению безопасности и мониторь новости про утечки данных. Обязательно пытайся разобраться в сути. И будь на стороне добра!