Я использую nodejs для написания службы загрузки изображений. Платные клиенты смогут отправлять файл изображения на мою конечную точку, которую я настроил на своем сервере. Однако, когда приходит каждый запрос, мне нужно подтвердить, что на самом деле это платный клиент, делающий запрос. Я подумал о том, чтобы клиент дал мне свое доменное имя, а я бы просто проверил заголовок реферера. Однако кто-то может легко подделать заголовок реферера и воспользоваться моей услугой без оплаты. Как разработчики SaaS решают эту техническую проблему? Можно ли исправить это, не требуя, чтобы мои клиенты имели код на стороне сервера?
Каков безопасный способ узнать реферера/реферера в HTTP-запросе?
- Не полагайтесь на сторону клиента для такой работы. 29.07.2012
- Как насчет OAuth? 29.07.2012
Ответы:
Вы не можете аутентифицировать браузер с заголовком реферера.
Если вы хотите аутентифицировать человека, вам, скорее всего, понадобится система входа в систему, которой они предоставляют учетные данные (имя пользователя/пароль), и вы сверяете их с разрешенной базой пользователей. Если они проходят, то вы устанавливаете в браузере определенный тип файлов cookie, который указывает, что они являются законным пользователем. Последующие запросы от этого пользователя будут содержать этот файл cookie, который вы можете проверять при каждом запросе.
Файл cookie должен быть чем-то, что вы создаете, что вы можете проверить, что его нельзя легко угадать или подделать (например, сеанс или зашифрованный токен с вашего сервера). Обычно вы устанавливаете срок действия файла cookie через определенный период времени, чтобы пользователь должен был снова войти в систему.
Вы создаете внешний сервис хостинга изображений для веб-сайтов или хотите поделиться чем-то, что ДОЛЖНО быть конфиденциальным и БЕЗОПАСНЫМ? Если это первое, то читайте дальше.
Конечно, заголовок можно подделать. Вот почему вам не стоит об этом беспокоиться:
Альтернатива уродлива: чтобы создать безопасную службу обеспечения, вам придется разработать какую-то систему токенов, которую владелец веб-сайта также реализует на своем конце. Скорее всего, он не зарегистрируется у вас, потому что есть более простые альтернативы.
Спуфинг должен быть сделан на стороне клиента. Очень немногие «пользователи» на самом деле будут это делать. Два гика, подделывающие заголовки на своей машине, не будут иметь для вас большого значения. Если они напишут прокси или промежуточное ПО, которое делает эту работу автоматически, и многие люди начнут его использовать, это может стать проблемой. Однако это маловероятно.
Думаю, вы уже знаете, но, поскольку вы не упомянули, он называется Hotlinking
. Погуглите эту тему, чтобы найти больше ресурсов.