? Falle di sicurezza nel software possono venire in forme più che i programmatori possono immaginare. Uno di questi attacchi è il sovraccarico del buffer , quando un attaccante fornisce più informazioni di un programma in grado di gestire . In particolare gli scenari di programmazione , come ad esempio la programmazione del sistema o di programmazione C di basso livello , i buffer di stringa sono vulnerabili allo sfruttamento . Alcune tecniche di manipolazione delle stringhe possono essere impiegati per prevenire questi attacchi . Queste tecniche comprendono il monitoraggio della dimensione della stringa , verifica limiti di buffer e utilizzando le funzioni di gestione delle stringhe sicure . String BUFFER PIENO
Quando i programmatori di scrivere codice per gestire l'input dell'utente testuale , che l'input spesso si muove attraverso un buffer o variabile. Buffer " superamento " si verifica quando il programmatore non crea un buffer di dimensioni sufficienti per gestire l'input dell'utente . L'ingresso non si ferma quando il buffer si ferma. Piuttosto , il programma salva il testo in memoria subito dopo il buffer , potenzialmente sovrascrivere i dati del programma fondamentali . Stringa di buffer overflow più spesso si verificano quando i programmatori non controllano l'input dell'utente in modo corretto.
Controllo Boundaries
Ingresso utente può spesso estendersi oltre i confini di un allineamento a causa del cattivo confine controllo . In particolare in C , dove le stringhe sono rappresentate come array di caratteri , l'inserimento e la manipolazione di stringhe in questi array può diventare difficile. E 'possibile valori di indice di matrice sbagliare e sovrascrivere posizioni in memoria al di fuori della matrice . Da sempre incluso il codice che controlla i confini della matrice per garantire che essi non siano sovrascritti , il programmatore può limitare l'accesso stringa alla matrice.
Usando grandi buffer
Nei linguaggi di più alto livello , come C # o Java , il programmatore può utilizzare gli oggetti di input specifici che contengono grandi buffer . BufferedReader di Java è un buon esempio di questo . L'utente può creare l'oggetto con un grande stronzo o un bastone con la sua grande dimensione del buffer predefinito per gestire l'input . L'oggetto quindi gestisce testo nel buffer. In linguaggi di basso livello come C , il programmatore probabilmente array di caratteri di uso . In tal caso , il programmatore deve assicurarsi che l' array di caratteri ricezione di dati rimane sufficiente per gestire qualsiasi formato di dati immaginabile .
Usare le funzioni sicura
Per quanto riguarda l'input dell'utente va , il linguaggio di programmazione C impiega funzioni diverse per le varie operazioni di input . Non tutte queste opzioni sono sicuri . Per esempio, la Ottiene funzione non controlla l'input dell'utente a tutti, e vi permetterà di passare qualche cosa nel programma. La funzione strcpy non effettuerà alcun controllo limiti. Invece , le altre funzioni di sicurezza dovrebbero essere utilizzati , come ad esempio le fgets o funzioni strncpy .