Posso vietare il download da link esterni?

Il browser no, il server sì. Per impostazione predefinita, quando un browser invia una richiesta allo stesso origin della pagina che contiene il riferimento, includerà un’intestazione referrer per indicare al server da dove proviene. Un server può utilizzare queste informazioni per influenzare il comportamento, inclusa la concessione o il diniego dell’accesso a determinate posizioni.

È facile aggirare questa misura, ma previene i collegamenti casuali da altri siti web.

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

Sostituendo www.example.com nel codice sopra con il dominio della tua istanza di Discourse, dovresti ottenere una configurazione nginx appropriata per prevenire il hotlinking ai file caricati sulla tua istanza.

Potresti anche voler fare qualcosa di diverso dal restituire un 403 (non consentito); ad esempio, potresti voler reindirizzare alla home page del tuo Discourse. Per farlo, potresti utilizzare invece il seguente codice.

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 307 /;
    }
}

Dovrebbe essere possibile aggiungere qualcosa al tuo file app.yml per iniettare la configurazione durante una ricostruzione. Non sono sicuro di come fare questa parte, non l’ho approfondita in dettaglio.

4 Mi Piace