Accueil Finances personnelles Programmation c ++: 10 Astuces Anti-Hacker - mannequins

Programmation c ++: 10 Astuces Anti-Hacker - mannequins

Table des matières:

Vidéo: Langage C : 14. Erreurs 2024

Vidéo: Langage C : 14. Erreurs 2024
Anonim

En tant que programmeur C ++, vous devez apprendre ce que vous devez faire dans votre code C ++ pour éviter d'écrire des programmes vulnérables aux pirates. Il décrit également les fonctionnalités que vous pouvez activer si votre système d'exploitation les prend en charge, telles que l'ASLR (Address Space Layout Randomization) et la prévention de l'exécution des données (DEP).

Ne pas faire d'hypothèses sur l'entrée de l'utilisateur

La vision du tunnel du programmeur est correcte pendant la phase de développement initiale. À un moment donné, cependant, le programmeur (ou, mieux encore, un autre programmeur qui n'avait rien à voir avec le développement du code) a besoin de s'asseoir et d'oublier le problème immédiat. Elle doit se demander: «Comment ce programme réagira-t-il aux intrants illégaux? "

Voici quelques règles pour vérifier les entrées:

  • Ne faites aucune hypothèse sur la longueur de l'entrée.

  • N'acceptez pas plus de saisie que vous n'en avez pour vos tampons de longueur fixe (ou tampons de taille variable utilisés).

  • Vérifiez la portée de chaque valeur numérique pour vous assurer que cela a du sens.

  • Rechercher et filtrer les caractères spéciaux qui peuvent être utilisés par un pirate pour injecter du code.

  • Ne transmettez pas l'entrée brute à un autre service, tel qu'un serveur de base de données.

Et effectuez les mêmes contrôles sur les valeurs renvoyées par les services distants. Le pirate peut ne pas être du côté de l'entrée, il peut être du côté de la réponse.

Gérer les pannes avec élégance

Votre programme doit répondre raisonnablement aux défaillances qui se produisent dans le programme. Par exemple, si votre appel à une fonction de bibliothèque renvoie un nullptr, le programme devrait le détecter et faire quelque chose de raisonnable.

Raisonnable ici doit être compris assez libéralement. Le programme n'a pas besoin de flairer pour comprendre exactement pourquoi la fonction n'a pas retourné une adresse raisonnable. Il se pourrait que la demande soit trop importante en raison d'une entrée déraisonnable. Ou il se pourrait que le constructeur ait détecté un type d'entrée illégale.

Peu importe. Le point est que le programme devrait restaurer son état du mieux qu'il peut et mettre en place pour le prochain bit d'entrée sans écraser ou corrompre les structures de données existantes telles que le tas.

Gérer un journal de programme

Créez et maintenez des journaux d'exécution qui permettent à quelqu'un de reconstituer ce qui s'est passé en cas d'échec de la sécurité. (En fait, cela est tout aussi vrai dans le cas de n'importe quel type d'échec.) Par exemple, vous voulez probablement vous connecter chaque fois que quelqu'un se connecte ou se déconnecte de votre système.

Vous voudrez certainement savoir qui a été connecté à votre système lors d'un événement de sécurité - c'est le groupe le plus à risque d'une perte de sécurité et qui est le plus méfiant lors de la recherche de coupables.En outre, vous devrez enregistrer toutes les erreurs du système qui incluraient la plupart des exceptions.

Un programme de production réel contient un grand nombre d'appels qui ressemblent à quelque chose comme:

log (DEBUG, "Utilisateur% s est entré mot de passe légal", sUser);

Ceci est juste un exemple. Chaque programme aura besoin d'un type de fonction de journal. Que ce soit ou non appelé log () est sans importance.

Suivre un bon processus de développement

Chaque programme doit suivre un processus de développement formel bien pensé. Ce processus doit inclure au moins les étapes suivantes:

  • Recueillir et documenter les exigences, y compris les exigences de sécurité.

  • Revoir le design.

  • Respectez une norme de codage.

  • Test d'unité sous test.

  • Effectuez des tests d'acceptation formels basés sur les exigences d'origine.

De plus, des examens par les pairs devraient être effectués à des moments clés pour vérifier que les exigences, la conception, le code et les procédures d'essai sont de haute qualité et conformes aux normes de l'entreprise.

Implémenter un bon contrôle de version

Le contrôle de version est une chose étrange. Il est naturel de ne pas s'inquiéter de la version 1. 1 lorsque vous êtes sous le pistolet pour obtenir la version 1. 0 par la porte et dans les mains tendues des utilisateurs en attente. Cependant, le contrôle de version est un sujet important qui doit être abordé tôt car il doit être intégré dans la conception initiale du programme et non verrouillé plus tard.

Un aspect presque trivial du contrôle de version est de savoir quelle version du programme un utilisateur utilise. Quand un utilisateur appelle et dit: «Il le fait quand je clique dessus», le service d'assistance a vraiment besoin de savoir quelle version du programme l'utilisateur utilise. Il pourrait décrire un problème dans sa version qui a déjà été corrigé dans la version actuelle.

Authentifier les utilisateurs en toute sécurité

L'authentification des utilisateurs devrait être simple: l'utilisateur fournit un nom de compte et un mot de passe, et votre programme examine le nom du compte dans une table et compare les mots de passe. Si les mots de passe correspondent, l'utilisateur est authentifié. Mais quand il s'agit d'antihacking, rien n'est aussi simple.

D'abord, ne stockez jamais les mots de passe eux-mêmes dans la base de données. C'est ce qu'on appelle en les stockant en clair et c'est considéré comme très mauvais. Il est beaucoup trop facile pour un hacker de mettre la main sur le fichier de mot de passe. Au lieu de cela, enregistrez une transformation sécurisée du mot de passe.

Gérer les sessions distantes

Vous pouvez émettre certaines hypothèses lorsque l'ensemble de votre application s'exécute sur un seul ordinateur. D'une part, une fois que l'utilisateur s'est authentifié, vous n'avez pas besoin de vous inquiéter de le transformer en une personne différente. Les applications qui communiquent avec un serveur distant ne peuvent pas faire cette supposition - un pirate qui écoute en ligne peut attendre que l'utilisateur s'authentifie et détourne la session.

Que peut faire le programmeur soucieux de la sécurité pour éviter cette situation? Vous ne voulez pas demander à l'utilisateur plusieurs fois son mot de passe pour vous assurer que la connexion n'a pas été piratée. La solution alternative est d'établir et de gérer une session . Pour ce faire, le serveur envoie un cookie de session à l'application distante une fois que l'utilisateur s'est authentifié avec succès.

Obscurcissez votre code

L'obscurcissement du code consiste à rendre l'exécutable aussi difficile à comprendre pour un pirate que possible.

La logique est simple. Plus il est facile pour un hacker de comprendre le fonctionnement de votre code, plus il sera facile pour le pirate de comprendre les vulnérabilités.

L'étape la plus simple que vous pouvez prendre consiste à vous assurer que vous ne distribuez qu'une version de votre programme qui n'inclut pas d'informations sur le symbole de débogage. Lorsque vous créez le fichier de projet pour la première fois, assurez-vous de sélectionner une version de débogage et une version de publication.

Ne distribuez jamais, jamais, des versions de votre application contenant des informations sur les symboles.

Signez votre code avec un certificat numérique

La signature de code fonctionne en générant un hachage sécurisé du code exécutable et en le combinant avec un certificat émis par une autorité de certification valide. Le processus fonctionne comme ceci: L'entreprise qui crée le programme doit d'abord s'enregistrer auprès de l'une des autorités de certification.

Une fois que l'autorité de certification est convaincue que Ma société est une entité logicielle valide, elle émet un certificat. C'est un long numéro que n'importe qui peut utiliser pour vérifier que le détenteur de ce certificat est le célèbre Mon Entreprise de San Antonio.

Utilisez un cryptage sécurisé partout où c'est nécessaire

Comme tout bon avertissement, cet avertissement comporte plusieurs parties. Tout d'abord, "Utiliser le chiffrement partout où c'est nécessaire. "Cela a tendance à faire penser à la communication d'informations de compte bancaire sur Internet, mais vous devriez penser plus général que cela.

Les données qui sont communiquées, que ce soit sur Internet ou sur une plage plus petite, sont généralement connues sous le nom Data in Motion. Data in Motion devrait être crypté à moins que cela ne soit d'aucune utilité pour un pirate.

Les données stockées sur le disque sont appelées Données au repos. Ces données doivent également être cryptées s'il y a un risque de perte, de vol ou de copie du disque. Les entreprises chiffrent régulièrement les disques durs sur les ordinateurs portables de leur entreprise au cas où un ordinateur portable serait volé au scanner de sécurité de l'aéroport ou laissé dans un taxi quelque part.

Les petits périphériques de stockage portables tels que les clés USB sont particulièrement susceptibles d'être perdus - les données sur ces périphériques doivent être cryptées.

Programmation c ++: 10 Astuces Anti-Hacker - mannequins

Le choix des éditeurs

Installation des périphériques réseau Juniper dans un rack - mannequins

Installation des périphériques réseau Juniper dans un rack - mannequins

Première étape de l'utilisation de tout périphérique réseau implique l'installation du matériel et des logiciels nécessaires à son fonctionnement. Les périphériques qui exécutent le système d'exploitation Junos varient en taille et en forme: très petits (commutateurs avec seulement quelques ports fonctionnant sur un courant de bureau normal) ou massifs (routeurs centraux multi-rack nécessitant plusieurs installateurs expérimentés ...

Comment gérer les fichiers journaux des périphériques Junos - dummies

Comment gérer les fichiers journaux des périphériques Junos - dummies

Si vous avez créé des fichiers journaux volumineux types d'événements à différents types de fichiers pour la facilité d'utilisation, vous devez gérer ces fichiers. Par défaut, le logiciel Junos OS limite la taille des fichiers journaux à 128 Ko. Lorsque les événements sont consignés, lorsque la taille totale des messages dépasse 128 Ko, quelque chose ...

Le choix des éditeurs

Adolescents gais: sortir avec la famille et les amis - les mannequins

Adolescents gais: sortir avec la famille et les amis - les mannequins

Qui révèlent l'homosexualité n'est jamais facile - pour jeunes ou vieux - mais le processus peut être particulièrement difficile pour les adolescents, qui sont dépendants de leur famille et n'ont pas encore établi leur propre vie privée avec leur propre lieu de vie et un emploi pour fournir un soutien financier. En fait, les taux de suicide ...

Comment Implanon fonctionne comme contrôle des naissances - les nuls

Comment Implanon fonctionne comme contrôle des naissances - les nuls

Certaines femmes choisissent Implanon comme contraceptif parce qu'elles veulent un contraceptif Cela ne nécessite pas de maintenance quotidienne, ni même saisonnière, ni de stérilisation. Implanon est une bonne option pour ces femmes parce que le dispositif est implanté sous la peau du bras d'une femme et est efficace pendant jusqu'à trois ans. Avec ...

Comment la grossesse change votre corps et votre vie sexuelle - les nuls

Comment la grossesse change votre corps et votre vie sexuelle - les nuls

Peuvent certainement faire partie d'une vie sexuelle saine les neuf mois de grossesse. Cela dit, ce ne sera probablement plus pareil qu'auparavant. Le corps d'une femme change au cours de cette période, tout comme ses besoins. La meilleure façon d'avoir des rapports sexuels durant la grossesse est de comprendre comment le corps d'une femme change pendant ...

Le choix des éditeurs

Utiliser une structure de répertoires peu profonds pour de meilleurs résultats de moteur de recherche - mannequins

Utiliser une structure de répertoires peu profonds pour de meilleurs résultats de moteur de recherche - mannequins

Structure de répertoire pour votre site Web, il est important de ne pas aller trop loin - cela garantit que les moteurs de recherche peuvent plus facilement votre site et que les utilisateurs trouveront votre site plus accessible. La structure du répertoire fait référence à l'emplacement physique de vos fichiers dans les dossiers du site. Par exemple, ...

Comprendre les avantages des requêtes à longue queue pour le SEO - Les nuls

Comprendre les avantages des requêtes à longue queue pour le SEO - Les nuls

Stratégie de référencement pour attirer beaucoup de monde sur votre site. Mais vous ne voulez pas seulement de la quantité - vous voulez du trafic de qualité. Vous voulez attirer des visiteurs qui viennent et restent un moment et trouvent ce qu'ils recherchent sur votre site. Ce dont vous avez vraiment besoin, ce sont les clients. Dans le monde de ...

Services de syndication traditionnels et flux RSS pour le contenu SEO - dummies

Services de syndication traditionnels et flux RSS pour le contenu SEO - dummies

Certains services de syndication vendent du contenu pour votre site web. Ce contenu est souvent envoyé à des sites Web utilisant des flux RSS. La syndication de contenu n'a rien de nouveau. Une grande partie de ce que vous lisez dans votre journal local n'est pas écrite par le personnel du journal; Cela vient d'un service de syndication. En général, ce matériel devrait être meilleur que le contenu syndiqué gratuit. Cependant, ...