So che la mia domanda è stata ripetuta molte volte, ma la maggior parte delle risposte risolve le funzioni che non uso nemmeno (come l'uso delle immagini) e che mi preoccupa perché forse non sto facendo qualcosa che dovrebbe fare.
Quando convalido le immagini, prima controllo le dimensioni (2 MB o meno) e poi controllo l'estensione del file usando:
$Extension=explode('.',$Userfile);
if(!in_array(end($Extension),$Whitelist))
Dove $Whitelist
sono le estensioni che autorizzo (solo jpg, jpeg e png). Dopo di che uso getImageSize
per verificare che sia davvero un'immagine e se tutte e 3 le condizioni sono soddisfatte, quindi creo un nuovo nome per l'immagine, aggiungo ".jpg" e poi lo salvi in una cartella di immagini (I don ' so se questo è importante, ma creo anche una versione ridotta dell'immagine da mostrare nella pagina e se vuoi vederla a grandezza intera, devi fare clic e vedere l'immagine originale in una nuova scheda).
L'unica cosa che faccio con queste immagini è mostrarle con img src="" sul mio sito web, non includo mai le immagini (in realtà non so nemmeno perché alcune persone lo fanno [non criticando, sono serio ]) o utilizzare fopen e funzioni simili e la cartella images non può eseguire il codice php.
È sufficiente non eseguire codice php incluso nelle immagini?
È sufficiente non eseguire codice html / javascript nelle immagini? Perché non voglio un attacco XSS solo perché ero ingenuo con le immagini e consideravo solo apache che eseguiva il codice php .
Devo fare qualcosa sulle possibili immagini con il virus? Penso che la limitazione delle dimensioni, aggiungere un nuovo nome e assicurarmi sempre di aggiungere .jpg alla fine del nuovo nome mi aiuti a mitigare questo , ma non ne sono proprio sicuro.
Sono nuovo con i contenuti caricati ed è per questo che mi sento davvero paranoico su questo (e su tutti i tipi di input dell'utente ... è come essere dentro una piramide dove tutto è maledetto), quindi apprezzerò davvero tutte le risposte .