Хобрук: Ваш путь к мастерству в программировании

Каков безопасный способ узнать реферера/реферера в HTTP-запросе?

Я использую nodejs для написания службы загрузки изображений. Платные клиенты смогут отправлять файл изображения на мою конечную точку, которую я настроил на своем сервере. Однако, когда приходит каждый запрос, мне нужно подтвердить, что на самом деле это платный клиент, делающий запрос. Я подумал о том, чтобы клиент дал мне свое доменное имя, а я бы просто проверил заголовок реферера. Однако кто-то может легко подделать заголовок реферера и воспользоваться моей услугой без оплаты. Как разработчики SaaS решают эту техническую проблему? Можно ли исправить это, не требуя, чтобы мои клиенты имели код на стороне сервера?


  • Не полагайтесь на сторону клиента для такой работы. 29.07.2012
  • Как насчет OAuth? 29.07.2012

Ответы:


1

Вы не можете аутентифицировать браузер с заголовком реферера.

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

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

29.07.2012
  • Согласовано. Существует бесплатная платформа с открытым исходным кодом под названием OAuth, которая сделает большую часть работы за вас: oauth.net. Вот ссылка на код JavaScript, который вы можете использовать, поскольку вы отметили Javascript в своем вопросе: oauth .googlecode.com/svn/code/javascript 29.07.2012

  • 2

    Вы создаете внешний сервис хостинга изображений для веб-сайтов или хотите поделиться чем-то, что ДОЛЖНО быть конфиденциальным и БЕЗОПАСНЫМ? Если это первое, то читайте дальше.

    Конечно, заголовок можно подделать. Вот почему вам не стоит об этом беспокоиться:

    1. Альтернатива уродлива: чтобы создать безопасную службу обеспечения, вам придется разработать какую-то систему токенов, которую владелец веб-сайта также реализует на своем конце. Скорее всего, он не зарегистрируется у вас, потому что есть более простые альтернативы.

    2. Спуфинг должен быть сделан на стороне клиента. Очень немногие «пользователи» на самом деле будут это делать. Два гика, подделывающие заголовки на своей машине, не будут иметь для вас большого значения. Если они напишут прокси или промежуточное ПО, которое делает эту работу автоматически, и многие люди начнут его использовать, это может стать проблемой. Однако это маловероятно.

    Думаю, вы уже знаете, но, поскольку вы не упомянули, он называется Hotlinking. Погуглите эту тему, чтобы найти больше ресурсов.

    29.07.2012
    Новые материалы

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..

    Использование данных из Adobe Analytics в предложениях Adobe Target
    Я уверен, что все видели эти всплывающие окна в интернет-магазинах, которые говорят что-то вроде « 15 человек просматривают этот товар прямо сейчас! » или « 105 человек из Мичигана купили это..

    Машинное обучение и его набор данных в CreateML
    Когда я впервые начал учиться в Apple Developer Academy, у меня был момент неуверенности в моем интересе к машинному обучению. Нужно ли мне сменить карьеру моей мечты с специалиста по данным на..

    Обучение требует воли
    Недавно я прочитал отличную статью Шейна Легга и Джоэла Венесса из DeepMind. http://arxiv.org/pdf/1109.5951v2.pdf В статье «универсальный интеллект» агента π определяется как: Поэтому..

    Безопасность по дизайну делает всех счастливыми
    Заложенная безопасность делает всех счастливыми Если вы никогда не смотрели Louis C.K. рассказать о том, как Все удивительно, и никто не счастлив ; побаловать себя. Сделайте это прямо..