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: Sebastian Geier
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
Cattura tutti i punti di ingresso e le costruzioni dei percorsi e rendi visibili le dipendenze dalla directory di lavoro.
Projektstamm zentral aus
__DIR__ableiten und interne Ziele mit systemgeeigneten Trennern daraus bilden.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.
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.