Main > JavaScript | Notes > Авторизация на сайте с помощью заголовка

Авторизация на сайте с помощью заголовка

10.11.2017 0 comments » Views: 722

Авторизация

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

Для начала расскажу о самой проблеме. У меня есть ряд блогов, куда я периодически захожу. Ранее у меня был статический ip и я настроил в блоге авторизацию по ip. Т.е. я захожу и сайт меня сразу авторизовывает. Плагин уже не помню, но было удобно. Однако, в один не прекрасный день, мой провайдер перестал предоставлять услугу статического ip и пришлось вернуться к старой схеме, т.е. ввод логина и пароля.

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

  1. закладка с прописанным get параметром, что-то типа "?auth_token=tra-la-la-la". Очень ненадежный вариант, т.к. всякие счетчики и прочая нечесть логирует url и token просто напросто уплывет
  2. создаем локальную страницу, с заранее прописанным в форме логином и паролем, а нам остается только нажать перейти. Тоже не очень такой вариант.
  3. очень похожий на предыдущий, но с использование плагина Bookmark POST, который может открывать закладку с передачей POST запроса

Теперь, я вот придумал еще один вариант, а именно передавать token в заголовке запроса к сайту. Это очень похоже на вариант №1, только не с параметром в url, а с параметром в заголовке. Итак нам понадобится плагин Header Editor, ставим его в браузер и открываем настройки. Добавляем новое правило с такими настройками:

  • Name = test.com
  • Rule type = Modify the request header
  • Match type = Domain
  • Match rule = test.com
  • Exclude rule = {пусто}
  • Execute type = Custom function
  • Code = {см. ниже}

Самый простой вариант, просто модифицировать заголовок так

вариант чуть сложнее, это взять host (т.е. test.com) добавить к нему ключ, получить хеш и отправить именно хеш:

Теперь, если все сделано правильно, в панеле разработчика можно увидеть, что для домена test.com будет отправляться дополнительный заголовок "Auth-Token".

Останется отлавливать его на сайте и проверять, а в случае совпадения можно авторизовывать пользователя. В PHP заголовки можно получить функцией getallheaders().

Этот способ уже лучше, но все еще не безопасен для авто-авторизации, т.к. хеш хоть и будет разный для разных сайтов, но будет статичен. Улучшить ситуацию может добавление в хеш метки времени (например UTC 2017-11-10-21-14). Тогда кеш будет истекать через минуту. Но, об этом подумаю немного позже, а сейчас возвращаюсь от этого прототипа к прерванной работе..

Author: | Rating: 4/5 | Tags: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>