Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

Audit di .htaccess: errore 500, direttive morte e compromissioni

Audit di .htaccess: perché il sito restituisce 500 e quali regole non funzionano

Trascina il file — lo strumento troverà il BOM, le direttive morte, le regole ad alto rischio di errore 500 e i segni di un intervento esterno. Il file viene letto nel tuo browser e non viene inviato da nessuna parte.

I controlli a livello di byte — BOM, CRLF, caratteri non stampabili e invisibili — sono possibili solo per un file. Incollando dagli appunti il browser li ha già rimossi, quindi la causa più frequente di un errore 500 diventa invisibile.
L'analisi parte automaticamente. Il file non viene inviato da nessuna parte: lo legge il tuo browser.
Contesto

Un .htaccess pulito non cura una compromissione. Se il sito è compromesso, il codice dannoso vive nel PHP e il .htaccess ne è solo la conseguenza: il dropper riscriverà il file pochi minuti dopo che l'hai ripulito. L'ordine è inverso — prima trovare il codice eseguibile, poi mettere ordine nella configurazione.

Il file viene letto nel tuo browser: il suo contenuto non viene inviato da nessuna parte né memorizzato.

Perché un file e non del testo incollato

La causa più frequente di un errore 500 dopo aver modificato .htaccess non si vede affatto nel testo. È il BOM: tre byte invisibili all'inizio del file, aggiunti dal Blocco note di Windows quando si salva in UTF-8. Apache li considera parte della prima direttiva e non riesce ad analizzarla. Per questo lo strumento accetta proprio il file: solo così si possono leggere i byte e vedere il BOM, gli a capo in stile Windows e i caratteri invisibili dentro le righe. Il secondo gruppo di problemi sono le direttive che non fanno nulla ma sembrano funzionanti. mod_gzip_on è sintassi di Apache 1.3: sui server moderni viene ignorata in silenzio, mentre per anni si crede che la compressione sia attiva. Anche un blocco ExpiresByType racchiuso in un controllo su mod_headers.c invece che mod_expires.c non funzionerà — e senza un suggerimento non lo si nota. Terzo: php_value e php_flag. Funzionano solo se PHP è caricato come modulo Apache. Sugli hosting moderni con PHP-FPM una riga del genere viene ignorata oppure restituisce subito un 500. E a parte, sulla sicurezza: se nel file si trovano regole che reindirizzano i visitatori a seconda del motore di ricerca da cui arrivano, o che nascondono il redirect all'amministratore, è un segno tipico di compromissione. Ma un .htaccess pulito non cura la violazione: quasi sempre da qualche parte nei file vive uno script PHP che lo riscriverà.

Domande frequenti