Vai al contenuto principale

Approfondimento · PHP, moduli e sicurezza

Protezione del caricamento dei file in base a tipo, dimensione e posizione

I caricamenti richiedono la convalida lato server delle dimensioni e del tipo di file, nomi di file casuali e una posizione di archiviazione senza permessi di esecuzione al di fuori della directory principale pubblica del sito web.

Gli sviluppatori PHP e gli operatori di siti web possono proteggere in modo completo i caricamenti di file PHP verificando tre punti specifici: stato di caricamento lato server, controlli rigorosi del formato ed estensioni di file duplicate.

Pubblicato: 3 minuti di lettura · Autore:

Quali controlli devono avere esito positivo prima che un caricamento PHP venga salvato in modo permanente?

Vengono accettati solo i caricamenti PHP riusciti dal campo previsto e verificati rispetto a limiti rigorosi di dimensioni e formato. `finfo` e, se necessario, un decodificatore specifico per il formato controllano il contenuto. `move_uploaded_file` sposta il file in un'area di archiviazione protetta con un identificatore casuale, separata dalla distribuzione pubblica.

Controllo rigoroso del formato

  1. Definizione precisa dei formati richiesti, della dimensione massima, dello spazio di archiviazione e della successiva consegna per ogni scopo di caricamento.

  2. Verifica dei codici di errore PHP, della dimensione effettiva, delle informazioni `finfo` e dei limiti specifici del formato prima di assegnare un nome interno casuale.

  3. Archiviazione dei file al di fuori della directory principale del sito web tramite `move_uploaded_file` e accesso consentito solo tramite percorsi di download o trasformazione controllati.

Archiviazione non eseguibile

  • Una parte dei percorsi di caricamento con controlli rigorosi di formato e dimensione, nomi casuali e archiviazione non eseguibile al di fuori della directory principale del sito web.

  • Rifiuti dovuti a codici di errore, dimensione, MIME, parser e limiti di contenuto, senza file temporanei o accessibili pubblicamente rimanenti.

Estensione file duplicata

  • Estensione file duplicata Un'immagine con estensione eseguibile è stata inserita in una directory in cui il server web elabora codice script.

  • Intestazione MIME falsificata L'applicazione si fida del valore del browser e accetta contenuti arbitrari con una designazione di tipo consentita.

  • Sovraccarico del parser di immagini Loading. . .

Stato del caricamento lato server

  • Stato del caricamento lato server – UPLOAD_ERR_OK, il file temporaneo effettivo e i limiti di dimensione configurati vengono controllati prima di ogni operazione di elaborazione del contenuto.

  • Controllo rigoroso del formato – La lista di file consentiti, le informazioni finanziarie (finfo) e, se necessario, l'analisi completa confermano un formato effettivamente richiesto, anziché basarsi solo sull'estensione o sull'intestazione client.

  • Archiviazione non eseguibile – La denominazione casuale lato server e l'archiviazione al di fuori della directory principale del sito web impediscono l'esecuzione diretta di codice e la manipolazione dei percorsi.

Verifica incrociata: "Estensione file duplicata"

Un modulo di richiesta accetta file PDF in base all'estensione e salva il nome originale nella cartella pubblica. Il nuovo percorso verifica la presenza di errori di caricamento, le dimensioni, le informazioni finanziarie (finfo) e il parser PDF, assegna un ID casuale e consegna il file dall'archivio protetto solo dopo l'autorizzazione.

Quali domande sorgono ora?

Separato da "Protezione completa del caricamento di file PHP" Caricamento di inclusioni globali con percorsi sicuri e dipendenze chiare affronta un'importante questione successiva: come fare in modo che le inclusioni PHP condivise rimangano indipendenti dalla directory di lavoro e protette dalla manipolazione dei percorsi?

Chi desidera approfondire "Protezione completa del caricamento di file PHP" dal punto di vista del cluster "Hosting, server, CDN e caching" troverà ulteriori informazioni in Gestione corretta dei permessi e della proprietà dei file sui server web la classificazione appropriata.

Se si desidera implementare concretamente "Protezione completa del caricamento di file PHP", è possibile trovare ulteriori informazioni in. . . Sistemi web robusti Fare riferimento a questo documento. Si concentra su "Inserimento dei dati nei moduli ed elaborazione sicura" e "Stato del caricamento lato server".

Conclusione: Caricamento di file PHP completamente sicuro

Il caricamento sicuro combina la convalida del contenuto con un limite di archiviazione rigoroso. Anche il contenuto identificato in modo errato non deve eseguire codice o determinare un percorso pubblico.

Fonti e ulteriori informazioni

Queste fonti primarie sono fondamentali per il comportamento della piattaforma, la terminologia e i limiti di convalida descritti in "Caricamento di file PHP completamente sicuro".

Tesi chiave

Gli errori di caricamento, le dimensioni effettive e il tipo MIME vengono controllati lato server; i formati consentiti sono rigorosamente limitati. Il file viene rinominato, spostato al di fuori della directory principale del sito web utilizzando `move_uploaded_file` e non viene mai eseguito come codice.

Cosa non riguarda

L'estensione del file, il tipo MIME del browser e un nome originale sanificato non sono sufficienti; il contenuto caricato non deve inoltre essere direttamente accessibile come file web eseguibili.

Di cosa si tratta

Il server verifica lo stato del caricamento, le dimensioni effettive e il tipo di contenuto, assegna un nuovo nome e lo salva al di fuori della directory principale del sito web senza permessi di esecuzione.

Ulteriori approfondimenti

PHP, moduli e sicurezza

Memorizzare la configurazione al di fuori della directory principale del sito web accessibile pubblicamente.

Loading. . .

PHP, moduli e sicurezza

Disabilitare l'output degli errori in produzione senza perdere le funzionalità diagnostiche.

A complemento della "protezione completa del caricamento dei file PHP", si pone la seguente questione: come è possibile che gli errori PHP rimangano indagabili se i dettagli non vengono visualizzati nel browser?

Panoramica degli Insight

Tutti gli Insight di VELUNO in sintesi

Ulteriori analisi sui sistemi web, la visibilità digitale e modelli di lavoro robusti.

Implicazioni pratiche

Memoria non eseguibile: decisione successiva concreta

Un set di test dovrebbe includere estensioni di file errate, valori MIME errati, file di dimensioni eccessive, errori di analisi e contenuti eseguibili misti. Nessun artefatto pubblico o persistente dovrebbe rimanere dopo ogni rifiuto.