VCS per manipolare gli alberi restituiti per evitare perdite? [chiuso]

2

Mi chiedo se ci sia un sistema che cambierebbe gli alberi del codice sorgente in modo sottile dai sistemi di controllo delle versioni in modi che sono difficili da scoprire (ad esempio spazi bianchi alle estremità delle linee, forse cambiano anche alcuni nomi meno variabili) in "filigrana" "il codice in modo che sia possibile scoprire chi l'ha estratto dal repository. Pensi che un tale sistema possa spaventare gli sviluppatori dal caricare il codice online?

Modifica Per affrontare l'argomento "questo è un problema di fiducia", vorrei sottolineare che si tratta di una domanda ipotetica e stavo pensando a questo come a un modo per impedire a uno sviluppatore di divulgare il codice sorgente in una grande azienda, dove molte gli sviluppatori hanno accesso all'intero albero.

    
posta d33tah 06.05.2013 - 21:46
fonte

2 risposte

5

Prima che questo mi sfugga di mano con le modifiche e i commenti, volevo dirlo.

Questa non è una situazione ipotetica. Quasi tutte le società di software affrontano questo problema e tutto si riduce a un problema di affidabilità. Questo argomento è stato ampiamente discusso su altri siti StackExchange , la maggior parte delle risposte può essere riassunta in:

1- Hire people you trust.

2- Make then sign an NDA.

3- Give them access only to the code they need

Mi dilungherò sull'ultimo punto per affrontare la situazione che ti stai chiedendo. Nel caso di Windows, sono sicuro al 99% che non tutti i dipendenti Microsoft hanno accesso al codice sorgente di Windows. Nemmeno i dipendenti che lavorano su Windows hanno accesso a tutto il codice di Windows. Ogni dipendente dovrebbe avere accesso alle parti del codice che è responsabile del mantenimento.

Gli sviluppatori del Progetto A non hanno bisogno di accedere al codice del Progetto B, e così via.

    
risposta data 12.04.2017 - 09:31
fonte
5

Ignorando per un momento la saggezza di manipolare il codice sorgente, chiediti come dovrebbe funzionare questa filigrana. È necessario disporre di file diversi per ogni sviluppatore. Ciò significa che alcune trasformazioni automatiche del codice non cambiano il significato del codice, ma non sono reversibili. Oh, e non dovrebbe rendere il codice difficile da mantenere. Alla fine della giornata, dovrebbe essere un codice valido, giusto?

Aggiungi spazio bianco? Questo può essere banalmente normalizzato. Cambia i nomi delle variabili? Vuoi dire offuscare il codice sorgente nel tuo albero dei sorgenti?

E se la filigrana dovesse mai fallire: "Ehi, hai rotto la build!" "Alla cassa, forse. Funziona per me. "

Quindi pensaci: devi avere file diversi per ogni sviluppatore . Collaborare alla ricerca di un bug? "Ho rintracciato il problema nel debugger, x non è inizializzato." "What x ? Ho solo y e z nella mia copia. "

Anche se in qualche modo hai trovato un modo per filigranare il codice sorgente, questo può essere utile solo se gli sviluppatori non hanno modo alternativo di ottenere il codice sorgente. Quindi avere il server di generazione di un archivio sorgente è giusto. Non è un modo per fermarti, ma stai camminando su una linea sottile.

Ora pensiamo per un minuto alla saggezza di questo approccio. Stai dicendo agli sviluppatori che ti fidi di loro scrivere codice (e non fare un lavoro scadente, o piantare backdoor), ma non ti fidi di loro per non far trapelare il codice. In primo luogo, questa posizione sembra abbastanza incoerente, quindi non andrà giù bene con il tipico sviluppatore. In secondo luogo, rendi più difficile il loro lavoro (vedi sopra) senza alcun beneficio tangibile. Di nuovo, non sarà popolare. Il prevedibile risultato finale è che i tuoi sviluppatori daranno uno sguardo ai tuoi metodi di codifica, e daranno le loro idee alla competizione, e ti lasceranno con il tuo codice scadente.

Anche se per qualche miracolo sei riuscito a implementare un sistema di filigrana, quanto pensi che potrebbe essere utile? Se la versione di Alice del codice sorgente è trapelata, come fai a sapere che Alice lo ha fatto trapelare? Se Eva vuole far trapelare il codice, supponendo che non possa sbarazzarsi della sua filigrana o cambiarla con quella di Alice, può camuffare le sue tracce perdendo il codice di Alice. Potrebbe accedere furtivamente alla macchina di Alice - quindi è necessario crittografare tutte le unità, addestrare i tuoi sviluppatori contro attacchi di cameriera malvagi, avere politiche rigorose per non condividere macro di editor o patch non impegnate ... Mentre alcune di queste sono buone misure di alta sicurezza, per bloccare tutti gli attacchi percorsi, devi anche limitare severamente l'efficienza del team.

Se possiedi un corpus significativo di codice, ciò che puoi fare è limitare l'accesso al codice sorgente, in modo che ogni squadra veda solo i moduli su cui sta lavorando. Per basi di codice sufficientemente grandi, questo è di fatto una buona igiene in quanto mantiene l'indipendenza tra i componenti. Se la limitazione dell'accesso a parti del codice sorgente non funziona per te, non hai abbastanza codice o non ti serve quasi abbastanza riservatezza per considerare anche questo schema di filigrana.

    
risposta data 07.05.2013 - 03:02
fonte

Leggi altre domande sui tag