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 2025

Vidéo: Langage C : 14. Erreurs 2025
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

Les bons outils pour la photographie macro - les nuls

Les bons outils pour la photographie macro - les nuls

Vous avez de nombreuses options pour l'équipement pour capturer des gros plans macro photographies. Vous avez peut-être déjà une caméra qui prend de superbes photos en gros plan. Macro photographie signifie créer une image dans laquelle le sujet est représenté sur le capteur numérique (ou plan de film) dans sa taille réelle. Si vous trouvez que les limites de votre ...

Conseils pour prendre bon point et déclenchez Photographies - mannequins

Conseils pour prendre bon point et déclenchez Photographies - mannequins

La photographie est sur la capture et la conservation images, et en tant que photographe, vous voulez prendre les meilleures photos que vous pouvez. Si vous utilisez un appareil photo compact, utilisez ces astuces simples pour améliorer vos photos: Verrouillez toujours la mise au point avant de prendre une photo. Cadre, ne viser pas. Utilisez le viseur ou sur l'écran tout affichage pour composer ...

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Pour photographier certains sujets de près et en essayant d'atteindre certains résultats, le trépied que vous utilisez peut déterminer si vous réussissez ou échouez. Savoir ce qui est disponible sur le marché et les différences entre les trépieds peut être très utile et vous aide à décider quels trépieds vous conviennent le mieux. Lors de la sélection d'un trépied, accordez une attention particulière à ...

Le choix des éditeurs

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

La prière chrétienne est une façon de parler à Dieu. Cependant, pour tirer pleinement parti de la prière chrétienne, vous ne pouvez pas simplement parler, vous devez aussi vous préparer à écouter. Les conseils suivants peuvent vous aider à entendre ce que Dieu vous dit: Obtenez le scoop sur ce que Dieu vous dira par ...

Comparant les croyances à travers l'église chrétienne - les mannequins

Comparant les croyances à travers l'église chrétienne - les mannequins

Différentes confessions chrétiennes sont organisées et adorent de différentes façons. Cette liste pratique vous aidera à suivre et à comparer certaines différences dans le culte, les rituels et les croyances des plus grands groupes de l'Église chrétienne. Moyens de salut anglicans / épiscopaux: la grâce de Dieu par la foi seule. Comment ils adorent: le style traditionnel par la liturgie; liturgie contemporaine ...

Conversation avec Dieu - mannequins

Conversation avec Dieu - mannequins

La prière consiste simplement à communiquer avec Dieu. Il n'y a rien de magique à propos de la prière chrétienne; c'est une question de fait. Cependant, la prière chrétienne est plus que simplement dire à Dieu votre liste de demandes et s'attendre à ce qu'il réponde à vos prières comme s'il était un distributeur automatique cosmique. Oui, la prière est un moyen de partager avec Dieu ...

Le choix des éditeurs

Loi visant à accroître Uplifting émotions - mannequins

Loi visant à accroître Uplifting émotions - mannequins

Afin d'élever vos émotions, la première étape est de prendre conscience de ce qui émotions que vous avez. Prenez conscience de ce qui vous déclenche - ce qui vous met en colère et vous met en colère et ce qui vous rend très excité. Un déclencheur surveille certaines émissions de télévision et permet aux émotions de ces programmes de s'infiltrer ...

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Presque tous les médias commerciaux destinés aux femmes reçoivent leur publicité les revenus des secteurs de l'alimentation, de la beauté, de l'alimentation et de la mode. Juste l'industrie de régime elle-même est une entreprise commerciale de 33 milliards de dollars par an. Et, bien sûr, ces industries ont continuellement besoin de clients pour continuer à réussir. C'est dans leur meilleur intérêt de ...

Comment l'image corporelle se forme dans votre jeunesse - les nuls

Comment l'image corporelle se forme dans votre jeunesse - les nuls

En général, ce que vous avez vécu avec votre famille grandissaient ont eu un effet direct sur les pensées et les sentiments que vous aviez à propos de votre corps. Repensez à vos jeunes années. Dans quelle mesure les énoncés suivants décrivent votre famille? Personne n'a exercé. La voiture était utilisée même pour de courts trajets. De la nourriture lourde et engraissante ...