Gli overflow del buffer, come detto, non sono possibili in Java. Ci sono matrici Java (byte) che più o meno mappano direttamente alla memoria, ma tutti i limiti di accesso sono corretti (gettando un IndexOutOfBoundsException
se qualcuno sta leggendo oltre i limiti.Questo è un controllo di runtime ovviamente. riferimenti invece di puntatori ( NullPointerException
è un po 'errato) L'aritmetica del puntatore non è supportata Ovviamente IndexOutOfBoundsException
di solito non viene catturato, quindi può ancora essere usato per eseguire un attacco denial of service.
Ciò non significa che Java non sia vulnerabile ad altri errori di programmazione. Ad esempio, potresti perdere un errore relativo alla memoria se perdi risorse.
Per le buone pratiche di codifica, per favore dai un'occhiata ad es. le pratiche di codifica di Google . Questi principalmente specificano le pratiche relative alla sintassi. Per la semantica generale della programmazione Java dovresti almeno leggere Java efficace .
Troppe poche persone li usano, ma è una buona idea eseguire analisi del codice statico sul codice sorgente generato e sul codice byte. Due strumenti ben noti sono CheckStyle per il codice sorgente e FindBugs per il codice byte. Può pagare e utilizzare applicazioni speciali in grado di eseguire anche test automatici del codice. Vi è una miriade di società specializzate ad es. test statici. Molte di queste aziende eseguono tali analisi gratuitamente per applicazioni open source.
Devi avere JUnit test , almeno per qualsiasi classe di biblioteca che scrivi. Si consiglia di eseguire copertura del codice per i tuoi test di unità. Tralascio altre pratiche, come test di livello applicativo e revisione del codice, oltre a menzionare che esistono. Per poter fare tutto questo dovresti usare un sistema di controllo delle versioni ben definito e un ambiente di costruzione. Se hai più di uno sviluppatore, allora integrazione continua di solito paga.
Una delle pratiche di sicurezza più conosciute è non fidarsi dell'input della tua applicazione. Potresti voler creare un'analisi delle minacce separata per il tuo progetto di sicurezza.