Come verificare che tutti i file siano intatti prima dell'installazione?

1

Sto lavorando al mio CMS (in piattaforma PHP) da molto tempo ormai. Il programma principale è fatto e sto attualmente sviluppando la parte Installer. L'installazione stessa sarà abbastanza semplice:

  1. Carica tutti i file
  2. Verifica che la directory "content /" abbia le autorizzazioni corrette
  3. Controlla se TUTTI i file sono intatti e non modificati [Questo è l'oggetto di questa domanda]
  4. Inserisci i dati di configurazione e le prime impostazioni
  5. Esegui installazione (Genera tutte le tabelle DB e inserisci dati di esempio ecc.)

Ora il punto interrogativo è al punto 3. Come posso verificare TUTTI i file? La verifica stessa dovrebbe confrontare tutti i file di directory radice CMS con un elenco da una posizione remota. L'elenco dovrebbe contenere nome file, dimensione file e tipo file. In questo modo l'utente può verificare che non ci siano file inutili o corrotti, che potrebbero indicare una violazione del software.

Ho visto alcuni programmi di installazione di software farlo, ma non riesco a trovarlo ora e lì perché non ho capito il metodo più ottimale per questo. Ovviamente c'è sempre un semplice trucco array , ma sicuramente ci deve essere un metodo migliore e più veloce?!

    
posta Kalle H. Väravas 04.07.2012 - 02:43
fonte

2 risposte

1

Prima di tutto, direi che cercare file "non necessari" non è davvero una buona idea. L'utente potrebbe aver installato il CMS in una cartella comune con un altro software. D'altra parte, se confermi che i tuoi file non sono corrotti, dovrebbe essere OK, poiché un utente deve modificare i tuoi file per introdurre qualcos'altro nel tuo CMS (altrimenti il tuo design è subottimale, ma può succedere se tu importa tutti i file che si adattano a un modello, non dovresti dipendere da questo).

Un'altra cosa: in PHP (per quanto mi consta) non puoi davvero assicurarti che i tuoi file non vengano modificati per includere un "crack" nel tuo meccanismo di sicurezza. Ciò a sua volta significa che tutto ciò che fai nell'installer è teoricamente inutile, dal momento che può essere sconfitto da un avversario abbastanza intelligente.

Quindi, sull'argomento. Se possibile, utilizza la crittografia a chiave pubblica anziché l'hashing.
Puoi facilmente includere un elenco di file e controllarli con sha1_file (hash) o un equivalente migliore (PKC). Quindi confrontare i valori calcolati con i valori corretti e generare messaggi di errore in caso di discrepanze.
Se vuoi veramente assicurarti che solo i tuoi file siano sul server, usa readdir per generare l'elenco di file e controllarlo sul tuo bundle. Questo è tutto un IMO piuttosto semplice.

    
risposta data 04.07.2012 - 03:05
fonte
3

Per verificare l'integrità dei file, generare e confrontare gli hash dei file con gli originali. Per proteggere dai download corrotti, CRC-32 o MD5 è sufficiente. Tuttavia, se si desidera assicurarsi che i file non siano stati alterati da terzi malintenzionati, per qualsiasi motivo, consultare SHA-1 . Tutti e tre sono ampiamente utilizzati e implementati e dovrebbero essere disponibili per PHP.

Inoltre, come già notato da K.Steff, non è possibile impedire che vengano apportate modifiche al software in questo modo. A causa dell'interpretazione di PHP, i file possono essere facilmente modificati dopo l'installazione.

    
risposta data 04.07.2012 - 03:09
fonte

Leggi altre domande sui tag