? Failles de sécurité dans les logiciels peuvent venir en plus de formes que les programmeurs peuvent imaginer. Une de ces attaques est le dépassement de mémoire tampon , quand un attaquant fournit plus d'informations qu'un programme peut manipuler. En particulier scénarios de programmation , tels que la programmation du système ou la programmation C bas niveau, tampons de chaîne sont vulnérables à l'exploitation . Certaines techniques de gestion des chaînes peuvent être utilisés pour empêcher ces attaques . Ces techniques comprennent la surveillance de la taille de la chaîne , la vérification des limites de mémoire tampon et en utilisant les fonctions de manipulation de chaînes de sécurité. Cordes tampons mémoire
Quand les programmeurs écrivent du code pour gérer l'entrée d'utilisateur textuelle , cette entrée passe souvent à travers un tampon ou variable. Buffer " dépassement " survient lorsque le programmeur ne crée pas un tampon de taille suffisante pour gérer les entrées de l'utilisateur. L'entrée ne s'arrête pas lorsque la mémoire tampon s'arrête. Au contraire, le programme enregistre le texte dans la mémoire directement après le tampon , ce qui pourrait écraser les données importantes du programme . Tampon de chaîne déborde surviennent le plus souvent lorsque les programmeurs ne vérifient pas l'entrée d'utilisateur correctement .
Vérification des limites
Entrée utilisateur peut souvent dépasser les limites d'un tableau à cause du mauvais frontière vérification . Particulièrement en C, où les chaînes sont représentées comme des tableaux de caractères , insertion et de manipulation des chaînes dans ces tableaux peut devenir difficile. Il est possible de valeurs de l'indice de la baie de mal calculer et écraser emplacements en mémoire en dehors du tableau. En incluant toujours le code qui vérifie les limites de la gamme afin de s'assurer qu'ils ne sont pas remplacés , le programmeur peut limiter l'accès de la chaîne à la matrice.
Utilisant la grande Tampons
langages de haut niveau tels que C # ou Java , le programmeur peut utiliser des objets d'entrée spécifiques qui contiennent de grandes tampons. Le BufferedReader de Java est un bon exemple de cela. L'utilisateur peut créer cet objet avec un grand bougre ou le bâton avec la grande taille de mémoire tampon par défaut pour gérer l'entrée. L'objet se charge ensuite de texte dans le tampon . Dans les langages de bas niveau tels que C , permettra probablement des tableaux de caractères utilisent le programmeur. Dans ce cas, le programmeur doit veiller à ce que le tableau de caractères à recevoir des données reste assez grand pour gérer n'importe quelle taille de données possibles et imaginables.
Utiliser les fonctions sécurisé
En ce qui concerne l'entrée d'utilisateur va, le langage de programmation C emploie différentes fonctions pour diverses opérations d'entrée. Toutes ces options sont sécurisées . Par exemple, le Obtient fonction ne vérifie pas l'entrée d'utilisateur à tous, et permettra à rien de passer dans le programme. La fonction strcpy n'effectue pas la vérification des limites. Au lieu de cela , d'autres fonctions sécuritaires doivent être employées, telles que les fgets ou fonctions strncpy .