avvertimento importante: io non sono un esperto di sicurezza (ma mi diletto)
In passato ho usato Amazon S3 e la loro sicurezza basata su token per le attività. Ciò consente di generare URL privati e anche temporanei per l'accesso alle risorse. Si potrebbe anche implementare un meccanismo simile sul proprio server, ma tenere a mente si sarà ora ospitare e servire i beni stessi in modo da tenere a mente per cose come l'uso della larghezza di banda, la cache, ecc
This post sembra avere una bella tutorial dettagliato sulla protezione delle immagini usando AngularJS e Amazon.
Se non si desidera percorrere la rotta Amazon, è necessario implementare una sorta di token/sistema di sicurezza autonomamente e sono disponibili numerosi approcci. Dipenderà in gran parte dal livello di sicurezza che desideri.
È possibile caricare i dati dell'immagine in modo programmatico senza URL. Dovrebbe essere possibile usare i CSS e base64 data URIs per fare ciò. È possibile effettuare una richiesta AJAX per i dati e popolare l'URI di dati. Anche se questo sarebbe assolutamente sicuro, sarebbe anche potenzialmente inefficiente.
È possibile use cookies controllare l'accesso. Poiché questi verranno inviati dal browser durante il recupero delle immagini.
È possibile utilizzare un'implementazione personalizzata di URL sicuri e tokenizzati come https://host/secure_images/{tokenized_access_url}.jpg
. Proprio come fa S3. Puoi persino far scadere questo gettone dopo un po '.
A seconda delle esigenze si possono trovare alcune di queste tecniche male la vostra capacità di sfruttare la cache. Ecco perché l'utilizzo di S3/Cloudfront può essere la scelta migliore in termini di sicurezza ed efficienza.
La cosa che dovresti anche chiedere è se queste risorse devono essere protette contro l'URL che è trapelato. Per molte situazioni, semplicemente mantenere l'URL del bene privato (usare un valore generato casualmente da qualche parte) e mostrarlo solo agli utenti che hanno accesso, è una soluzione sufficiente.
fonte
2014-06-20 14:55:24
Solo curioso, ma le immagini sono parti dell'interfaccia utente o sono effettivamente risorse che richiedono protezione? Ho lavorato su un progetto che prima aveva entrambi i tipi, e abbiamo finito per fare richieste di immagini per le immagini "protette" attraverso il server di backend per ottenere l'autenticazione - e le immagini dell'interfaccia utente che abbiamo deciso di non preoccuparci di proteggere in questo modo. – aet
Le risorse devono essere protette. È un'applicazione di gestione del progetto, i clienti possono caricare immagini/film/documenti/qualsiasi cosa e definire acl su di essi. Le immagini dell'interfaccia utente sono risorse pubbliche e non sono protette. –
perché non instradare le richieste di immagine attraverso la tua applicazione web? il backend quindi può inviare intestazioni appropriate per restituire l'immagine corretta – Alp