Ответ 1
Важное предупреждение: я не эксперт по безопасности (но я не знаю)
В прошлом я использовал Amazon S3 и их защиту от токенов для активов. Они позволяют создавать частные и даже временные URL-адреса для доступа к ресурсам. Вы также можете реализовать аналогичный механизм на своем собственном сервере, но имейте в виду, что теперь вы будете размещать и обслуживать активы самостоятельно, поэтому имейте в виду такие вещи, как использование полосы пропускания, кеширование и т.д.
Этот пост, кажется, содержит довольно подробное руководство по защите изображений с помощью AngularJS и Amazon.
Если вы не хотите идти по маршруту Амазонки, вам нужно реализовать какую-то схему токена/безопасности, и есть ряд подходов, которые вы могли бы предпринять. Это во многом будет зависеть от уровня безопасности, который вы хотите.
-
Вы можете загружать данные изображения программно без URL. Для этого нужно использовать CSS и базовые URI файлы64. Вы можете сделать запрос AJAX для данных и заполнить URI данных. Хотя это было бы абсолютно безопасно, оно также было бы потенциально неэффективным.
-
Вы можете использовать файлы cookie для контроля доступа. Поскольку они будут отправляться браузером при извлечении изображений.
-
Вы можете использовать настраиваемую реализацию защищенных, символизированных URL-адресов, таких как
https://host/secure_images/{tokenized_access_url}.jpg
. Так же, как S3. Вы даже можете сделать этот токен истекающим через некоторое время.
В зависимости от ваших потребностей вы можете обнаружить, что некоторые из этих методов вредят вашей способности использовать кеширование. Вот почему использование S3/Cloudfront может быть лучшим выбором с точки зрения безопасности и эффективности.
То, о чем вы должны спросить, это то, должны ли эти активы быть защищены от пропущенного URL. Для многих ситуаций простое сохранение URL-адреса ресурса (использование случайно генерируемого значения где-то) и его отображение только пользователям с доступом, является достаточным решением.