Upload immagine PHP - Sicurezza di memorizzazione all'esterno di root e accesso tramite readfile ()

1

Recentemente ho iniziato a immagazzinare caricamenti di immagini al di fuori del webroot e recuperarli tramite readfile (). Ho implementato questo e sta funzionando bene, ma ero curioso di sapere se ci sono ulteriori vulnerabilità che esistono ancora in questo metodo.

Se prendo il contenuto di uno script dannoso al di fuori della web-root tramite readfile () e lo invio su uno script php che ha un tipo di contenuto dell'immagine, questo costringe il browser a interpretare sempre questi dati come un'immagine o c'è un modo in cui un utente può aggirare questo e usarlo per eseguire uno script dannoso?

    
posta DanL 03.03.2016 - 23:44
fonte

2 risposte

3

Leggendo il file al di fuori del webroot con readfile (), non sarà in grado di eseguire uno script dannoso sul server .

Fornire il tipo di contenuto appropriato significa che non sarà gestito in modo errato come qualcos'altro nei casi più .

Tuttavia, ci sono ancora alcuni casi come Gifar dove un contenuto poliglotta è fornito in un modo che può influenzare il utente (questi sono in realtà problemi in Java o in Flash, ma rompono la stessa origine), quindi dovresti controllare che il contenuto sia che cosa sia, e che non sia uno di determinati formati indesiderati (ad esempio, i formati basati su zip sono piuttosto problematici).

    
risposta data 04.03.2016 - 01:42
fonte
1

Memorizzare al di fuori della radice del documento e utilizzare readfile() è un ottimo modo per proteggere il server.

Inoltre, per proteggere il client, non pubblicare i file HTML letteralmente (invia sempre un Content-Type: text/plain ), altrimenti apri la porta per gli attacchi di phishing. (Non sono sicuro che il vernacolo della sicurezza abbia un termine preciso per questo, è abbastanza vicino a un attacco da abbeveratoio, ma include e-mail di phishing a un URL sul server che indirizza l'utente al server dell'attaccante quando fornisce le proprie credenziali. )

    
risposta data 04.03.2016 - 07:44
fonte

Leggi altre domande sui tag