Vai al contenuto principale

Approfondimento · PHP, moduli e sicurezza

Padronanza dei percorsi relativi e assoluti nei progetti annidati.

Dateizugriffe sollten von einem festen Projektstamm oder __DIR__ ausgehen, weil relatives Verhalten sonst vom aktuellen Arbeitsverzeichnis abhängt.

"Gestire i percorsi PHP nei progetti" viene esaminato qui dal punto di vista dei "confini di codice, percorso e dipendenza". Per gli sviluppatori PHP e i gestori di siti web, "l'origine stabile del progetto" e "la dipendenza dal punto di ingresso" sono particolarmente importanti.

Pubblicato: 3 minuti di lettura · Autore:

Come si impedisce che gli include PHP in directory annidate utilizzino improvvisamente percorsi errati?

Bootstrap deriva PROJECT_ROOT da un file di codice versionato e definisce da esso i percorsi di configurazione, template e dati. Ogni accesso verifica la posizione prevista, l'esistenza e il tipo; i nomi di file forniti liberamente vengono esclusi o risolti utilizzando una chiave fissa.

Caso d'uso: "Dipendenza dal punto di ingresso"

Uno script di importazione può trovare templates/mail.php solo se viene avviato dalla directory principale del progetto. Bootstrap definisce la directory principale dalla propria posizione, l'importazione utilizza lo stesso percorso assoluto di destinazione e i test lo avviano deliberatamente da tre directory di lavoro.

Obiettivo normalizzato

  1. Cattura tutti i punti di ingresso e le costruzioni dei percorsi e rendi visibili le dipendenze dalla directory di lavoro.

  2. Projektstamm zentral aus __DIR__ ableiten und interne Ziele mit systemgeeigneten Trennern daraus bilden.

  3. Verifica l'esistenza, il tipo e l'appartenenza alla directory radice ed esegui test da più directory di lavoro e con chiavi dannose.

Dipendenza dal punto di ingresso

  • Dipendenza dal punto di ingresso Un percorso relativo funziona da index. php ma fallisce in una sottodirectory o in un'attività CLI pianificata.

  • Suddivisione della directory – Nicht geprüfte Segmente mit ../ oder symbolische Links verlassen den vorgesehenen Datenstamm.

  • Assunzione del sistema operativo I separatori concatenati manualmente e la capitalizzazione si comportano in modo diverso tra gli ambienti di sviluppo e di produzione.

Origine del progetto stabile

Criterio di test

Origine del progetto stabile

Die Basis entsteht aus __DIR__ einer bekannten Datei und bleibt in Web-, CLI-, Cron- sowie Testprozessen identisch.

Criterio di test

Obiettivo normalizzato

I percorsi interni composti vengono controllati rispetto alla radice e al tipo di file previsti prima di tentare l'accesso in lettura o scrittura.

  • Nessun input libero I valori delle richieste non costituiscono mai parti di directory o file; la selezione consentita utilizza chiavi fisse e destinazioni note.

Nessun input libero

Segnale di controllo

Segnale 1

Zahl relativer Pfade mit ../, getcwd-Abhängigkeit oder Requesteinfluss außerhalb einer festen Allowlist.

Segnale di controllo

Segnale 2

Percentuale di voci web, CLI, cron e di test che utilizzano lo stesso bootstrap e percorsi di destinazione interni identici.

Quali domande sorgono ora?

Una domanda di approfondimento pertinente con relativa risposta Protezione del caricamento dei file in base a tipo, dimensione e posizione"Quali controlli devono avere esito positivo prima che un caricamento PHP venga salvato in modo permanente? "

Un secondo link per "Gestire i percorsi PHP nei progetti" porta a: Esecuzione di migrazioni di server con una checklist riproducibileQuesto post rimane incentrato sulla domanda: "Quale checklist garantisce che una migrazione del server sia riproducibile e reversibile? "

Se si desidera mettere in pratica "Gestire i percorsi PHP nei progetti", è possibile fare riferimento a: Sistemi web robusti Questo si concentra su "Confini di codice, percorso e dipendenza" e "Origine stabile del progetto".

Conclusione: Padronanza dei percorsi PHP nei progetti

I percorsi assoluti sono affidabili quando la loro origine fa parte del codice e non dell'ambiente di runtime. Il root checking e la selezione chiusa forniscono ulteriore sicurezza per i progetti annidati.

Fonti e ulteriori informazioni

Le seguenti fonti documentano le linee guida tecniche e metodologiche utilizzate per "Padronanza dei percorsi PHP nei progetti".

  • Sicurezza del filesystem – Manuale PHPLa documentazione ufficiale di PHP descrive i permessi dei file, la proprietà, l'accesso al server web e i rischi dei nomi di file dinamici.

  • Schema composer. json – ComposerLa documentazione ufficiale di Composer definisce i metadati del pacchetto, i requisiti di versione, l'autoloading e i campi di configurazione.

  • json_decode – Manuale PHPIl manuale PHP documenta i tipi di ritorno, gli errori, i limiti di profondità e JSON_THROW_ON_ERROR per l'elaborazione controllata di JSON.

Tesi chiave

All'avvio, viene definito un percorso assoluto del progetto a partire da un file di codice noto. Da questo vengono costruiti e normalizzati ulteriori percorsi; l'input dell'utente viene escluso e vengono verificate l'esistenza e la leggibilità del percorso.

Cosa non riguarda

Pfade sollten nicht durch wiederholte ../-Ketten, das aktuelle Arbeitsverzeichnis oder Annahmen über die aufrufende URL bestimmt werden.

Di cosa si tratta

Ein bekannter Projektstamm aus __DIR__ bildet den absoluten Ursprung; weitere interne Ziele werden daraus normalisiert und ohne Nutzereingaben zusammengesetzt.

Ulteriori approfondimenti

PHP, moduli e sicurezza

Lettura sicura di file JSON e gestione di dati errati

"Padroneggiare i percorsi PHP nei progetti" include, come verifica separata, la domanda: come risponde PHP in modo inequivocabile a un file JSON mancante, illeggibile o non valido?

PHP, moduli e sicurezza

Proteggere la validazione lato server indipendentemente dal frontend

Aggiunge una decisione separata a "Gestione dei percorsi PHP nei progetti": Quali controlli deve ripetere PHP anche se il frontend ha già validato i campi?

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

Origine stabile del progetto: Prossima decisione affidabile

L'applicazione dovrebbe essere avviata da una directory di lavoro diversa e i suoi include e accessi ai dati più importanti dovrebbero essere testati. Qualsiasi errore rivela un'assunzione relativa nascosta relativa alla directory radice del progetto.