Как использовать аутентификацию на основе токенов для доступа к защищенным активам inline?

Я попал в ловушку, переходя от проверки подлинности на основе cookie-token в моих приложениях Ember/ Angular/Backbone.

Недостатком является то, что заголовки запросов нельзя установить на тегах img.

Некоторые предложили добавить параметры токена в конец запроса, таким образом, засоряя журналы сервера с помощью токенов auth.

Что (если есть) - это правильный способ доступа к защищенным встроенным ресурсам с использованием аутентификации на основе токенов?

Ответ 1

Важное предупреждение: я не эксперт по безопасности (но я не знаю)

В прошлом я использовал Amazon S3 и их защиту от токенов для активов. Они позволяют создавать частные и даже временные URL-адреса для доступа к ресурсам. Вы также можете реализовать аналогичный механизм на своем собственном сервере, но имейте в виду, что теперь вы будете размещать и обслуживать активы самостоятельно, поэтому имейте в виду такие вещи, как использование полосы пропускания, кеширование и т.д.

Этот пост, кажется, содержит довольно подробное руководство по защите изображений с помощью AngularJS и Amazon.

Если вы не хотите идти по маршруту Амазонки, вам нужно реализовать какую-то схему токена/безопасности, и есть ряд подходов, которые вы могли бы предпринять. Это во многом будет зависеть от уровня безопасности, который вы хотите.

В зависимости от ваших потребностей вы можете обнаружить, что некоторые из этих методов вредят вашей способности использовать кеширование. Вот почему использование S3/Cloudfront может быть лучшим выбором с точки зрения безопасности и эффективности.

То, о чем вы должны спросить, это то, должны ли эти активы быть защищены от пропущенного URL. Для многих ситуаций простое сохранение URL-адреса ресурса (использование случайно генерируемого значения где-то) и его отображение только пользователям с доступом, является достаточным решением.