Questa probabilmente è una domanda piuttosto ingenua data la mia conoscenza limitata del codice che ho visto, ma voglio capirlo prima di iniziare a immergermi nella scrittura del codice vero e proprio.
Sto scrivendo un set comune di strumenti per PHP e la maggior parte della mia ispirazione proviene dal framework .NET. La cosa ironica è che non ho mai usato il framework .NET, ma capisco C # e posso quindi portare i concetti che "capisco" da Mono.
Ma ho incontrato un po 'di muro, System.Security
. Mentre sfoglio i documenti API e le implementazioni di sicurezza Mono su Github, mi sembra che nessuna delle funzionalità possa mai essere applicata a PHP. La mia attuale confusione è la seguente:
PermissionSet ps1 = new PermissionSet(PermissionState.None);
ps1.AddPermission(new FileDialogPermission(FileDialogPermissionAccess.Open));
Console.WriteLine(ps1.ToXml().ToString());
Quindi ecco un esempio di base. Quello che voglio fare in PHP è creare un'applicazione parzialmente governata da permessi a livello "ambiente". Vale a dire, una macchina non dovrebbe essere in grado di eseguire determinate azioni che un'altra potrebbe. Ad esempio, la macchina A, non dovrebbe essere permessa a TCP per lavorare B.
Ma quando guardo il codice nell'esempio, non capisco davvero perché faccia alcuna differenza. La mia attuale comprensione è che non si tratta di "impostare" i permessi, ma di "controllarli". E il permesso stesso è predefinito da qualche altra parte, I.E. nella macchina.
Ho esaminato l'implementazione di Java della stessa funzionalità, e parallelamente .NET ha un aspetto molto più approfondito. Vorrei incorporare questo concetto nel mio codice PHP, ma al momento non so come lo farei.
Le autorizzazioni sono interamente arbitrarie? .NET impone restrizioni? o semplicemente fornire diagnostica di sicurezza all'applicazione? Se l'ultimo è vero, il porting su PHP non solo è possibile, ma potrebbe essere piuttosto utile. Comunque so che in PHP, il secondo è impossibile.
Qualcuno potrebbe chiarire cosa fanno gli spazi dei nomi di sicurezza Java e .NET e farmi un'idea di quanto sia fattibile portarlo in altre lingue.