Domanda

sto provando a collegare un processo CGI al mio servizio di Windows con una named pipe. Il mio codice funziona bene utilizzando un altro server sulla mia macchina di sviluppo, ma su IIS ci sono problemi di sicurezza quando chiamo CreateFile () nel processo CGI.

Il servizio di Windows è il server Named Pipe e così il processo CGI sta tentando di connettersi a tale named pipe come un client.

Ho scavato un po 'di codice che crea un descrittore di protezione globale con la bandierina SECURITY_WORLD_SID_AUTHORITY chiamando:

  InitializeAcl()
  AddAccessAllowedAce()
  SetSecurityDescriptorDacl()

Ma io davvero non capisco il concetto. Io parto dal presupposto che il tubo CreateNamedPipe Server () deve essere chiamato con questo ACL nella struttura SECURITY_ATTRIBUTES ma per quanto riguarda il client named pipe?

creo un altro descrittore di protezione globale e chiamare CreateFile () con quella?

Ho ereditato con

 SecurityAttributes.bInheritHandle   = TRUE;

Ho appena passare NULL nel CreateFile () chiamata?

È stato utile?

Soluzione

Dato che il tubo viene creato dal server, solo il server deve specificare l'ACL, il client utilizza NULL per l'ACL.

L'ereditarietà si applica solo se la named pipe viene creata in un unico processo e che i processi crea un nuovo processo in cui si desidera che processo generato per avere un accesso diretto alla maniglia (non riaprire la maniglia, anzi si ottiene il valore qualche altro modo, come una linea di comando).

È possibile utilizzare il Process Explorer su Sysinternals per vista con nome pipe aperti in un processo e poi guardare l'ACL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top