Accesso al file system tramite SQL

Mi sono appena imbattuto in una bella opzione in MySQL per attingere al file system e ottenere informazioni preziose, ad esempio sull'esistenza di file e cartelle o sul loro contenuto. Questo può essere molto utile come alternativa alla funzione php file_exists , poiché le informazioni sull'esistenza dei file possono ancora essere utilizzate nella query per ulteriori funzioni di ordinamento e aggregazione.


Se l' utente del database associato dispone del privilegio FILE , è possibile utilizzare il comando

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Durante la query non solo controlla se un file esiste, ma leggi anche il suo contenuto.

Su sistemi Windows va notato che i backslash devono essere contrassegnati di conseguenza nel percorso del file (esempio: C: \\ Windows \\ System32 \\ drivers \\ etc \\ hosts). Anche l'aspetto della sicurezza non dovrebbe essere completamente ignorato, poiché quando viene concesso il privilegio FILE, l'accesso al database significa automaticamente l'accesso al resto del file system.

Per garantire che non vengano restituiti solo valori NULL, è necessario assicurarsi che l'utente che esegue MySQL disponga dei diritti di lettura.

Per accedere a file di grandi dimensioni, è necessario aumentare la proprietà globale "max_allowed_packet", che è impostata su 1 MB.

mysql -u... -p...
set global max_allowed_packet = 1024 * 1024 * 512;
exit;

È ora possibile (dopo aver riavviato il server) accedere a file di dimensioni fino a 512 MB.

Indietro