Vai al contenuto principale

Approfondimento · PHP, moduli e sicurezza

Prevenire l'iniezione di intestazioni email nei moduli di contatto.

I moduli non accettano intestazioni inserite liberamente; destinatario e oggetto vengono derivati ​​da regole predefinite e gli indirizzi vengono rigorosamente validati.

Gli sviluppatori PHP e gli operatori di siti web possono verificare la presenza di "iniezioni di intestazioni email" in tre punti specifici: "Indirizzi di destinazione fissi", "Campo di intestazione rigoroso" e "Valore mittente libero".

Pubblicato: 3 minuti di lettura · Autore:

Come fa un modulo di contatto PHP a impedire l'inserimento di intestazioni email aggiuntive?

I valori utente non devono mai essere inseriti direttamente nei campi A, Cc, Ccn o nell'intestazione raw. Un contatto di risposta viene validato come un singolo indirizzo e controllato per CR e LF, mentre gli indirizzi fissi del mittente e del destinatario sono definiti nella configurazione; la libreria gestisce la corretta codifica e trasmissione.

Caso d'uso: "Valore Da libero"

Un modulo imposta l'indirizzo email inserito nel campo "Da" tramite concatenazione di stringhe. L'implementazione passa a un mittente con dominio fisso e a un campo "Rispondi a" validato tramite una libreria di posta; i tentativi con interruzioni di riga in Ccn codificate vengono scartati prima dell'invio.

Campo di intestazione rigoroso

  1. Identificare tutti i valori della richiesta che possono attualmente influenzare il destinatario, il campo "Da", il campo "Rispondi a", l'oggetto o altre intestazioni.

  2. Configurare staticamente destinazioni e mittenti, validare rigorosamente i singoli campi dell'indirizzo e rifiutare CR e LF prima della trasmissione.

  3. Passa a una libreria ben mantenuta per l'invio e l'esecuzione di test con interruzioni di riga codificate, indirizzi multipli e valori lunghi.

Gratuito Dal valore

  • Gratuito Dal valore – L'indirizzo del modulo viene utilizzato come indirizzo del mittente non elaborato e consente l'aggiunta di intestazioni o non viene inviato correttamente a causa delle policy di invio.

  • Bypass dell'interruzione di riga – I filtri incompleti riconoscono solo le rappresentazioni CR e LF, mentre la decodifica o i valori multipli creano successivamente nuove intestazioni.

  • Messaggio come intestazione – L'oggetto o il testo libero vengono scritti nella struttura dell'intestazione tramite concatenazione e non separano nettamente il contenuto dai metadati.

Indirizzi di destinazione fissi

  • Indirizzi di destinazione fissi – Il destinatario e il valore tecnico provengono da una configurazione protetta e non possono essere influenzati tramite i campi della richiesta.

  • Campo di intestazione rigoroso – Un campo "Rispondi a" facoltativo viene verificato come un solo indirizzo valido e rifiuta tutti i caratteri CR o LF.

  • Invio basato su libreria – Un componente di posta ben gestito genera intestazioni e strutture MIME anziché stringhe generate manualmente con escape non chiari.

Invio basato su libreria

  • Numero di campi di intestazione configurabili dall'utente e percentuale di percorsi di invio con destinatari fissi e codifica basata su libreria.

  • Rifiuta i valori di indirizzo con interruzioni di riga, destinazioni multiple o formati non validi senza generare un messaggio.

Come "Prevenire l'iniezione di intestazioni di email" si collega ad altri argomenti

Separa "Prevenire l'iniezione di intestazioni di email" Padronanza dei percorsi relativi e assoluti nei progetti annidati. Un'importante domanda di approfondimento: Come si impedisce che gli include PHP in directory annidate utilizzino improvvisamente percorsi errati?

Chi desidera approfondire "Prevenire l'iniezione di intestazioni di email" dal punto di vista del cluster "Hosting, Server, CDN e Caching" troverà ulteriori informazioni in Configurare in modo sicuro i reverse proxy per i servizi interni. la classificazione appropriata.

Se si desidera implementare concretamente "Prevenire l'iniezione di intestazioni di email", è possibile fare riferimento a Sistemi web robusti Questo si concentra su "Input dei moduli ed elaborazione sicura" e "Indirizzi di destinazione fissi".

Conclusione: Prevenire l'iniezione di intestazioni di posta elettronica

L'iniezione di intestazioni viene impedita al confine di fiducia, non tramite successive manipolazioni del testo. Destinazioni fisse, indirizzi individuali rigorosamente definiti e una libreria di posta elettronica impediscono l'inserimento di dati utente nella struttura.

Fonti e ulteriori informazioni

Queste fonti primarie sono autorevoli per quanto riguarda il comportamento della piattaforma, la terminologia e i limiti di validazione relativi alla "prevenzione dell'iniezione di intestazioni di posta elettronica".

Tesi chiave

L'input dell'utente non viene mai convertito direttamente in A, Cc, Bcc o altre righe di intestazione. Una libreria di posta ben gestita imposta destinatari fissi e codifica il contenuto; gli indirizzi del mittente vengono convalidati e i caratteri CR/LF nei campi di intestazione vengono rifiutati.

Cosa non riguarda

La rimozione delle singole interruzioni di riga dal corpo del messaggio non protegge le intestazioni se l'input dell'utente determina comunque destinatari, mittenti o intestazioni aggiuntive.

Di cosa si tratta

I destinatari e la struttura delle intestazioni rimangono fissi sul lato server; una libreria di posta ben gestita codifica gli indirizzi convalidati e tratta il corpo del messaggio esclusivamente come contenuto.

Ulteriori approfondimenti

PHP, moduli e sicurezza

Normalizzare l'input senza corrompere i caratteri validi.

"Prevenire l'iniezione di intestazioni di email" include, come fase di test separata, la domanda: come normalizza PHP l'input di testo senza corrompere nomi, accenti o punteggiatura?

PHP, moduli e sicurezza

Creazione di un registro di sicurezza ed errori per i moduli di produzione

"Prevenire l'iniezione di intestazioni di email" è integrato da una decisione separata: quali eventi dei moduli devono essere registrati senza creare nuovi rischi per la privacy o la sicurezza dei dati?

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

Campo di intestazione rigoroso: focus del prossimo test

Nel codice di consegna attuale, ogni concatenazione di valori di richiesta nelle intestazioni dovrebbe essere contrassegnata. Queste istanze saranno sostituite da metodi di libreria a configurazione fissa o tipizzata e testate con payload CR/LF.