JavaRush /Java Blog /Random-IT /Pausa caffè #35. Come rispettare le regole di sicurezza d...

Pausa caffè #35. Come rispettare le regole di sicurezza di GitHub. Suggerimenti utili per eseguire rapidamente il debug del codice Java

Pubblicato nel gruppo Random-IT

Come rimanere al sicuro su GitHub

Fonte: DZone GitHub è meritatamente considerata la piattaforma di sviluppo del team più popolare. Secondo i dati dello scorso autunno, più di 40 milioni di programmatori hanno utilizzato questo servizio. E poiché la maggior parte di loro utilizza l’open source per creare software, la sicurezza quando lavori su Github dovrebbe essere la tua massima priorità. Il riutilizzo del codice aumenta il rischio di diffondere vulnerabilità. Ciò significa che ogni utente GitHub dovrebbe prestare la massima attenzione alla creazione di un ambiente di sviluppo sicuro. Pausa caffè #35.  Come rispettare le regole di sicurezza di GitHub.  Consigli utili per eseguire rapidamente il debug del codice Java - 1Ci sono 8 regole che devi seguire per mantenere sicuro il tuo codice GitHub.

Fornire il controllo degli accessi

Il controllo degli accessi è uno dei modi migliori per migliorare la sicurezza non solo su GitHub, ma in qualsiasi altro ambiente in cui è richiesta la protezione del codice. GitHub offre diversi modi per ridurre i rischi nel tuo lavoro. Innanzitutto, prendi consuetudine la concessione dei privilegi minimi: concedi agli utenti del repository solo le autorizzazioni di cui hanno bisogno per svolgere il loro lavoro. Esistono altri metodi di controllo dell'accesso che dovresti seguire:
  • limitare la creazione di archivi per impedire agli utenti di divulgare informazioni sull'organizzazione in archivi pubblici;
  • abilitare la protezione dei rami e i controlli dello stato in modo che gli utenti possano unire i commit o gestire i rami in modo sicuro;
  • Consentire o disabilitare la biforcazione dei repository privati ​​per garantire che gli utenti non divulghino o condividano il tuo codice con altri;
  • revocare l'accesso a tutti gli utenti inattivi che non sono più membri della tua community o dipendenti dell'azienda;
  • Controlla periodicamente i diritti di accesso ai tuoi progetti su GitHub;
  • Assicurarsi che gli utenti non condividano l'accesso all'account GitHub o le password con altri;
  • assicurarsi che ogni utente del repository utilizzi l'autenticazione a due fattori nel proprio account;
  • Modifica periodicamente i token di accesso personali e le chiavi SSH.

Non archiviare mai i dati di accesso nei tuoi file GitHub

La perdita di informazioni di accesso al repository GitHub tramite codice, file di configurazione o messaggi di commit può essere utilizzata per gli attacchi. Per impedire che dati sensibili vengano aggiunti al tuo repository, utilizza strumenti di controllo degli accessi come git-secrets o vault . Questi strumenti eseguono la scansione della codebase e modificano l'accesso ogni volta che vengono trovate informazioni sensibili nel codice o nei file di configurazione. Se trovi informazioni sensibili nel tuo repository GitHub, dovresti eliminarle immediatamente. Ma poiché GitHub conserva una cronologia di tutti i commit nel tuo repository, la sola eliminazione dei dati non è sufficiente. Dovrai eliminare i file dalla cronologia del repository GitHub. Un passo importante per migliorare la sicurezza sarà la sostituzione di tutte le password e i token precedentemente disponibili al pubblico.

Abilita avvisi per dipendenze vulnerabili

Poiché gli utenti GitHub lavorano su più progetti, diventa sempre più difficile controllare il numero crescente di oggetti dipendenti. Fortunatamente, GitHub fornisce avvisi automatici per le dipendenze vulnerabili trovate nel repository. Questi avvisi si basano sul National Vulnerability Database (NVD), GitHub Security Advisories e il database delle vulnerabilità WhiteSource, che supporta più di 200 linguaggi di programmazione. Gli avvisi GitHub rendono più semplice e sicuro l'utilizzo delle librerie open source.

Controlla le app aggiunte da GitHub

Il Marketplace GitHub contiene centinaia di applicazioni scritte da sviluppatori e aziende di terze parti. Pertanto, è importante esaminare attentamente ogni applicazione che aggiungi al tuo repository. Quando installi applicazioni dal Marketplace GitHub, segui queste linee guida:
  • Applicare il principio del privilegio minimo. Non concedere mai alle applicazioni più diritti di accesso di quelli richiesti;
  • Metti sempre in discussione i diritti di accesso o le autorizzazioni richiesti da un'applicazione. Pensa al danno che ciò potrebbe causare con questo livello di accesso;
  • Verifica che l'azienda o lo sviluppatore dell'app esista effettivamente prima di concedergli l'accesso al tuo repository GitHub;
  • Controlla la funzionalità e la sicurezza dell'applicazione. Se contiene vulnerabilità, potresti diventare vittima di hacking;
La sicurezza di un'applicazione si giudica dalla sua parte più debole. Questo vale anche per i repository GitHub. Pertanto, prima di concedere a un'app l'accesso al tuo spazio di archiviazione, assicurati di fidarti di essa e che corrisponda al livello di accesso richiesto.

Controlla tutto il codice importato da GitHub

Gli sviluppatori utilizzano spesso il codice di altre persone. Ogni volta che copi parte del codice di qualcun altro nel tuo progetto, eseguine una revisione completa. Ciò può sembrare una perdita di tempo, soprattutto per piccoli progetti, ma c'è la possibilità che trascurando questa regola introduciate una vulnerabilità nel vostro repository. Un altro rischio associato al codice importato è che potrebbe contenere informazioni sensibili come i dati di accesso. Se vengono archiviati in file GitHub, ciò crea un altro rischio per la sicurezza. Controllare il codice prima di copiarlo aiuta a identificare tali lacune. Non dare per scontato che il codice di qualcun altro sia sicuro perché si trovava in un repository privato. Potrebbe benissimo danneggiare la tua base di codice.

Utilizza l'analisi statica automatica del codice sorgente per i tuoi repository

Esistono diversi strumenti di terze parti che puoi utilizzare per analizzare le vulnerabilità del tuo repository. Uno di questi è WhiteSource Bolt , uno strumento gratuito del Marketplace GitHub. WhiteSource Bolt esegue la scansione dei tuoi repository alla ricerca di vulnerabilità in tutto il codice esposto. Fornisce inoltre informazioni dettagliate sulle vulnerabilità e suggerisce opzioni di risoluzione.

Utilizza il piano GitHub adatto alle tue esigenze

Molte aziende hanno politiche che impediscono agli sviluppatori di pubblicare codice su piattaforme come GitHub. Queste restrizioni sono particolarmente comuni nei dipartimenti governativi e nelle istituzioni finanziarie. Se lavori in un ambiente altamente regolamentato, utilizza GitHub Enterprise , un piano aziendale che ti consente di ospitare repository su un server locale. Ciò fornisce un livello di sicurezza più elevato perché consente agli sviluppatori dell'azienda di avere accesso a tutti i progetti senza preoccuparsi degli utenti GitHub non autorizzati.

Segui una politica di sicurezza completa nei tuoi progetti

La sicurezza è una responsabilità collettiva. Se lavori in squadra, è importante stabilire delle regole di sicurezza che tutte le parti interessate devono seguire. Idealmente, dovresti riunire i team di sicurezza informatica e di sviluppo durante la fase di pianificazione per garantire che lavorino in sincronia. Ciò renderà più semplice garantire la protezione durante il processo di sviluppo. Se uno dei membri del tuo team non presta attenzione alla memorizzazione di password o altre informazioni sensibili, potrebbe mettere a rischio l'intero repository. Per evitare ciò, documenta chiaramente la procedura di sicurezza che tutti i tuoi colleghi devono seguire.

Conclusione

Proteggere il tuo codice su GitHub è facile. Devi solo garantire un adeguato controllo degli accessi, sfruttando le funzionalità di sicurezza integrate di GitHub. Se sei interessato alla massima protezione, integra strumenti aggiuntivi che aumenteranno la sicurezza del codice in tutte le fasi di sviluppo. Consigliamo inoltre di consultare le sezioni GitHub Security for Business e Free Users della documentazione . In questo modo puoi ottenere ulteriori informazioni sulla sicurezza e protezione del codice.

Suggerimenti utili per eseguire rapidamente il debug del codice Java

Fonte: Hackernoon Oltre a scrivere codice efficiente, migliorare nel debug è una delle cose più utili che puoi fare per semplificarti la vita come sviluppatore Java. Ciò è particolarmente importante nelle moderne condizioni di sviluppo del software, in cui il mondo del software si sta muovendo attivamente verso architetture distribuite e codice asincrono. Pausa caffè #35.  Come rispettare le regole di sicurezza di GitHub.  Consigli utili per eseguire rapidamente il debug del codice Java - 2Sebbene gli errori software siano inevitabili, stanno diventando sempre più difficili da rilevare e correggere in build complesse. E quando si passa alla fase di rilascio del prodotto, il processo di debug diventa un problema ancora più serio. Sfortunatamente, non c'è modo di evitarlo: il debug è necessario. Per aiutarti, ho deciso di condividere alcuni suggerimenti utili per il debug delle applicazioni Java nelle diverse fasi di sviluppo.

Usa i punti di controllo

Cominciamo con i punti di interruzione, un punto ovvio ma molto importante che è alla base di qualsiasi processo di debug. I checkpoint consentono di interrompere l'esecuzione di un'applicazione in modo da poter analizzare lo stato del programma e capire perché il codice non funziona correttamente. Ogni debugger offre diverse opzioni di punti di interruzione, inclusi punti di interruzione condizionali, punti di interruzione eccezioni, punti di controllo e punti di traccia. Imparare come e quando utilizzare diversi tipi di punti di interruzione può rendere più fluido il processo di debug. Vale la pena ricordare che alcuni strumenti moderni supportano i checkpoint senza interrompere l'applicazione. Ciò rende possibile impostare punti nel codice e raccogliere dati di debug senza interrompere l'esecuzione del programma.

Mostra la struttura logica

La funzionalità mostra struttura logica è molto utile quando si monitora il contenuto nelle classi Java. Se questa funzionalità è abilitata, l'elenco delle variabili mostra un array, che è molto più utile in un contesto di debug. Questo è molto comodo, soprattutto se nel tuo codice mancano i metodi toString() per gli oggetti. Le visualizzazioni delle variabili ti consentono anche di modificare direttamente i valori delle tue variabili durante il debug. Ciò può far risparmiare una notevole quantità di tempo poiché non è necessario riavviare la sessione di debug con i dati di input modificati.

Impara a navigare nella codebase

Qualsiasi debugger Java può utilizzare diverse funzioni che consentono di navigare attraverso diverse sezioni di codice durante il debug. Alcuni di essi includono "run to line", "step over", "step into" e "step into". Oltre a queste, considera altre due opzioni:
  1. Drop to frame: questa funzione viene utilizzata per tornare a un punto nello stack frame. Se ti sei perso un punto e devi tornare indietro, usa semplicemente la funzione Rilascia nel fotogramma.
  2. Filtraggio dei passaggi: consente di saltare determinati pacchetti durante il debug. Non è necessario navigare tra tutte le classi nel sistema JDK quando puoi semplicemente filtrare i tipi che non ti servono.
Per migliorare la velocità di navigazione del codice, devi padroneggiare le combinazioni di tasti funzione:
  • F5 - per "entrare".
  • F6 - per "scavalcare".
  • F7 - per "ritorno a gradini".
  • F8 - per correre al checkpoint successivo.
Sebbene i tasti di scelta rapida possano variare tra gli IDE, se li ricordi, ti eviterà di dover usare il mouse più spesso.

Impara a evitare le situazioni di stallo

Uno scenario di deadlock si verifica quando due o più thread si bloccano dopo aver formato una dipendenza circolare. Poiché un insieme di thread Java solitamente attende un'altra risorsa, ciò può causare l'arresto completo dell'applicazione. Il debug dei deadlock jstack può essere piuttosto difficile poiché non mostrano indicatori di problemi come picchi di memoria, carico della CPU, ecc. Esistono vari approcci per risolvere una situazione di stallo jstack. Innanzitutto, puoi acquisire più dump di thread nel cluster JVM per dedurre modelli di thread. In questo caso, l'analisi di un dump del thread statico potrebbe non essere sufficiente. A seconda delle dimensioni del cluster JVM, potrebbe essere necessario trascinare più file, il che spesso rappresenta un processo dispendioso in termini di tempo e lavoro. È preferibile utilizzare una soluzione di monitoraggio delle applicazioni che fornisca il livello JV e il livello di codice necessari per isolare i deadlock dei thread. Fortunatamente, esistono strumenti innovativi che possono aiutare in questa situazione, inclusi alcuni debugger moderni e strumenti APM commerciali. Questi strumenti aumentano la trasparenza del tuo codice Java identificando gli errori.

Sfrutta la potenza dei debugger di produzione

Il tipico processo di debug seguito dalla maggior parte degli sviluppatori prevede la replica dell'ambiente, l'isolamento dell'errore e la relativa correzione. Tuttavia, ciò non si applica in tutti i casi. Se questa è la situazione, lo sviluppatore dovrebbe utilizzare potenti debugger di produzione. Rookout è uno di questi strumenti. Ti consente di raccogliere dati di debug dalle applicazioni senza modificarne lo stato o il controllo del flusso. Con Rookout, puoi impostare punti di interruzione unificatori per ottenere un'analisi completa dello stack, acquisire variabili live o qualsiasi altro dato dell'applicazione necessario per il debug. Pertanto, invece di utilizzare soluzioni di monitoraggio ad alto costo per il debug della produzione, utilizza semplicemente Rookout, che fornisce tutto il necessario per eseguire il debug delle applicazioni senza ridistribuire o scrivere nuovo codice. Che tu stia lavorando su applicazioni lato server o in contenitori, Rookout è un'ottima aggiunta al tuo arsenale di debug.

Non dimenticare il debug remoto

La stragrande maggioranza degli IDE, come NetBeans, Eclipse, IntelliJ IDEA e Visual Studio, supportano il debug remoto, una tecnica che consente di correggere il codice Java che si trova su un altro computer. Ciò è particolarmente importante nelle situazioni in cui il tuo sistema non supporta il debug locale o quando il tuo computer non dispone di risorse sufficienti per eseguire i debugger. Per eseguire il debug remoto, è necessario fornire le informazioni di configurazione che il debugger utilizzerà per connettersi alla porta remota. Il debug remoto è utile anche nella risoluzione dei problemi in situazioni in cui gli sviluppatori fuori sede devono connettersi all'applicazione per correggere un bug. Ricorda che a volte il debug può richiedere più tempo dell'effettiva implementazione. Man mano che affini le tue capacità di debugging Java, cerca sempre di scrivere codice pulito ed efficiente: ti ripaga quando si tratta di correggere i bug. Se hai la sensazione che le cose stiano andando fuori controllo, è sempre una buona idea prendersi una pausa. Un bug è un enigma di programmazione e molti programmatori sono riusciti a risolvere questo problema senza avvicinarsi al proprio computer. Utilizza le strategie sopra descritte per eliminare i problemi di debug di Java. Buona programmazione!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION