Zuhause Persönliche Finanzen C ++ Programmierung: 10 Anti-Hacker Tipps - Dummies

C ++ Programmierung: 10 Anti-Hacker Tipps - Dummies

Inhaltsverzeichnis:

Video: Jedes Spiel hacken und Mod Menü erstellen [Cheat Engine und Visual C#] BKhacks 2024

Video: Jedes Spiel hacken und Mod Menü erstellen [Cheat Engine und Visual C#] BKhacks 2024
Anonim

Als C ++ - Programmierer müssen Sie lernen, was Sie in Ihrem C ++ - Code tun sollten, um zu vermeiden, Programme zu schreiben, die anfällig für Hacker sind. Es werden auch Funktionen beschrieben, die Sie aktivieren können, wenn Ihr Betriebssystem sie unterstützt, z. B. Adressraum-Layout-Randomisierung (ASLR) und Datenausführungsverhinderung (Data Execution Prevention, DEP).

Nehmen Sie keine Annahmen über Benutzereingaben vor.

Der Tunnelblick des Programmierers ist während der frühen Entwicklungsphase in Ordnung. Irgendwann jedoch muss sich der Programmierer (oder, noch besser, ein anderer Programmierer, der nichts mit der Entwicklung des Codes zu tun hatte) zurücklehnen und das unmittelbare Problem vergessen. Sie muss sich fragen: "Wie wird dieses Programm auf illegale Eingabe reagieren? "

Hier einige Regeln zum Überprüfen der Eingabe:

  • Nehmen Sie keine Annahmen über die Länge der Eingabe vor.

  • Akzeptieren Sie in Ihren Puffern fester Länge (oder bei Verwendung von Puffern variabler Größe) nicht mehr Eingaben, als Sie Platz haben.

  • Überprüfen Sie den Bereich jedes numerischen Werts, um sicherzustellen, dass dies sinnvoll ist.

  • Suchen Sie nach Sonderzeichen, die von einem Hacker zum Einschleusen von Code verwendet werden können, und filtern Sie diese heraus.

  • Übergeben Sie keine Rohdaten an einen anderen Dienst, z. B. einen Datenbankserver.

Und führen Sie die gleichen Prüfungen für die von den Remote-Services zurückgegebenen Werte durch. Der Hacker befindet sich möglicherweise nicht auf der Eingabeseite, er kann sich auf der Antwortseite befinden.

Fehlerhaft behandeln

Ihr Programm sollte angemessen auf Fehler reagieren, die innerhalb des Programms auftreten. Wenn Ihr Aufruf einer Bibliotheksfunktion z. B. ein nullptr, zurückgibt, sollte das Programm dies erkennen und etwas Vernünftiges tun.

Vernünftig ist hier recht liberal zu verstehen. Das Programm muss nicht herumschnüffeln, um herauszufinden, warum die Funktion keine vernünftige Adresse zurückgegeben hat. Es könnte sein, dass die Anfrage wegen zu unangemessener Eingabe zu viel Speicher war. Oder es könnte sein, dass der Konstruktor irgendeine Art von illegaler Eingabe erkannt hat.

Es spielt keine Rolle. Der Punkt ist, dass das Programm seinen Zustand so gut wie möglich wiederherstellen und für das nächste Bit der Eingabe einrichten sollte, ohne vorhandene Datenstrukturen wie den Heap zu zerstören oder zu beschädigen.

Ein Programmprotokoll verwalten

Erstellen und verwalten Sie Laufzeitprotokolle, die es jemandem ermöglichen, zu rekonstruieren, was im Falle eines Sicherheitsfehlers passiert ist. (In der Tat gilt dies auch für alle Arten von Fehlern.) Zum Beispiel möchten Sie wahrscheinlich jedes Mal protokollieren, wenn sich jemand bei Ihrem System anmeldet oder aus ihm herausmeldet.

Sie möchten auf jeden Fall wissen, wer in Ihrem System angemeldet war, als ein Sicherheitsereignis eintrat - dies ist die Gruppe, die am meisten von einem Sicherheitsverlust bedroht ist und die am meisten misstrauisch ist, wenn sie nach Angeklagten sucht.Außerdem sollten Sie Systemfehler protokollieren, die die meisten Ausnahmen enthalten würden.

Ein reales Produktionsprogramm enthält eine große Anzahl von Aufrufen, die ungefähr wie folgt aussehen:

log (DEBUG, "Benutzer% s eingegebenes legales Passwort", sUser);

Dies ist nur ein Beispiel. Jedes Programm benötigt eine Art Protokollfunktion. Ob es tatsächlich log () genannt wird, ist unwesentlich.

Verfolgen Sie einen guten Entwicklungsprozess

Jedes Programm sollte einem durchdachten, formalen Entwicklungsprozess folgen. Dieser Prozess sollte mindestens die folgenden Schritte enthalten:

  • Anforderungen erfassen und dokumentieren, einschließlich Sicherheitsanforderungen.

  • Design überprüfen.

  • Befolgen Sie einen Codierungsstandard.

  • Unterwerfstest.

  • Führen Sie formale Abnahmeprüfungen durch, die auf den ursprünglichen Anforderungen basieren.

Darüber hinaus sollten Peer Reviews an Schlüsselpunkten durchgeführt werden, um zu verifizieren, dass die Anforderungen, das Design, der Code und die Testverfahren von hoher Qualität sind und Unternehmensstandards erfüllen.

Implementierung einer guten Versionskontrolle

Die Versionskontrolle ist eine seltsame Sache. Es ist natürlich, sich nicht um die Version 1. 1 zu kümmern, wenn Sie unter der Pistole sind, um Version 1. 0 aus der Tür und in die ausgestreckten Hände der wartenden Benutzer zu bekommen. Die Versionskontrolle ist jedoch ein wichtiges Thema, das frühzeitig angesprochen werden muss, da sie in das ursprüngliche Design des Programms eingebaut und nicht später verschraubt werden muss.

Ein fast trivialer Aspekt der Versionskontrolle besteht darin, zu wissen, welche Version des Programms ein Benutzer verwendet. Wenn ein Benutzer aufruft und sagt: "Das macht er, wenn ich darauf klicke", muss der Helpdesk wirklich wissen, welche Version des Programms der Benutzer verwendet. Er könnte ein Problem in seiner Version beschreiben, das bereits in der aktuellen Version behoben wurde.

Benutzer sicher authentifizieren

Die Benutzerauthentifizierung sollte unkompliziert sein: Der Benutzer stellt einen Kontonamen und ein Kennwort bereit, und Ihr Programm sucht den Kontonamen in einer Tabelle und vergleicht die Kennwörter. Stimmen die Passwörter überein, wird der Benutzer authentifiziert. Aber wenn es um Antihacking geht, ist nichts so einfach.

Speichern Sie die Kennwörter niemals selbst in der Datenbank. Dies wird als Speicherung im Klartext bezeichnet und gilt als sehr schlechte Form. Es ist viel zu einfach für einen Hacker, die Passwortdatei in die Finger zu bekommen. Speichern Sie stattdessen eine sichere Transformation des Passworts.

Remote-Sitzungen verwalten

Sie können bestimmte Annahmen treffen, wenn Ihre gesamte Anwendung auf einem einzelnen Computer ausgeführt wird. Zum einen müssen Sie sich, sobald sich der Benutzer authentifiziert hat, keine Sorgen darüber machen, dass er in eine andere Person umgewandelt wird. Anwendungen, die mit einem entfernten Server kommunizieren, können diese Annahme nicht treffen - ein Hacker, der auf der Leitung zuhört, kann warten, bis der Benutzer sich selbst authentifiziert und dann die Sitzung entführt.

Was kann der sicherheitsorientierte Programmierer tun, um diese Situation zu vermeiden? Sie möchten den Benutzer nicht wiederholt nach seinem Passwort fragen, nur um sicherzustellen, dass die Verbindung nicht gekapert wurde. Die alternative Lösung besteht darin, eine Sitzung einzurichten und zu verwalten. Dazu führen Sie aus, dass der Server der Remoteanwendung ein Sitzungscookie sendet, sobald sich der Benutzer erfolgreich authentifiziert hat.

Verschleiern Sie Ihren Code

Code-Verschleierung ist der Akt, die ausführbare Datei für einen Hacker so schwierig wie möglich zu machen.

Die Logik ist einfach. Je einfacher es für einen Hacker ist, zu verstehen, wie Ihr Code funktioniert, desto einfacher wird es für den Hacker sein, Schwachstellen zu erkennen.

Der einfachste Schritt, den Sie ergreifen können, ist sicherzustellen, dass Sie nur eine Release-Version Ihres Programms verteilen, die keine Debug-Symbolinformationen enthält. Wenn Sie die Projektdatei zum ersten Mal erstellen, achten Sie darauf, dass sowohl eine Debug- als auch eine Release-Version erstellt wird.

Verteilen Sie niemals Versionen Ihrer Anwendung mit enthaltenen Symbolinformationen.

Signieren Sie Ihren Code mit einem digitalen Zertifikat

Bei der Codesignierung wird ein sicherer Hash des ausführbaren Codes generiert und mit einem Zertifikat einer gültigen Zertifizierungsstelle kombiniert. Der Prozess funktioniert folgendermaßen: Die Firma, die das Programm erstellt, muss sich zuerst bei einer der Zertifizierungsstellen registrieren.

Sobald die Zertifizierungsstelle überzeugt ist, dass Meine Firma eine gültige Software-Entität ist, stellt sie ein Zertifikat aus. Dies ist eine lange Zahl, die jeder verwenden kann, um zu verifizieren, dass der Inhaber dieses Zertifikats die berühmte My Company of San Antonio ist.

Verwenden Sie eine sichere Verschlüsselung, wo immer nötig

Wie jede gute Warnung hat diese Ermahnung mehrere Teile. Erstens: "Verwenden Sie Verschlüsselung wo nötig. "Dies erinnert gewöhnlich an die Übermittlung von Bankkontoinformationen über das Internet, aber Sie sollten allgemeiner denken.

Daten, die über das Internet oder über einen kleineren Bereich übertragen werden, werden allgemein als Daten in Bewegung bezeichnet. Daten in Bewegung sollten verschlüsselt werden, es sei denn, sie wären für einen Hacker nicht von Nutzen.

Auf der Festplatte gespeicherte Daten werden als Daten im Ruhezustand bezeichnet. Diese Daten sollten auch verschlüsselt werden, wenn die Gefahr besteht, dass die Festplatte verloren geht, gestohlen oder kopiert wird. Unternehmen verschlüsseln routinemäßig die Festplatten auf ihren Firmenlaptops, falls ein Laptop am Sicherheitsscanner am Flughafen gestohlen oder irgendwo im Taxi gelassen wird.

Kleine tragbare Speichermedien wie USB-Sticks sind besonders anfällig dafür, verloren zu gehen - Daten auf diesen Geräten sollten verschlüsselt werden.

C ++ Programmierung: 10 Anti-Hacker Tipps - Dummies

Die Wahl des Herausgebers

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Zum Hinzufügen von Arbeitsblättern zu Ihrer Excel 2013-Arbeitsmappe - dummies

Jede leere Arbeitsmappe, die Sie öffnen, enthält ein Einzelblatt mit dem prosaischen Namen Sheet1. Um weitere Blätter zu Ihrer Arbeitsmappe in Excel 2013 hinzuzufügen, klicken Sie einfach auf die Schaltfläche Neues Blatt in der Statusleiste (die mit Pluszeichen in einem Kreis). Jedes Arbeitsblatt, das Sie mit der Befehlsschaltfläche Neues Blatt hinzufügen, ist ...

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Wie man bedingte Formatierung in Excel 2010 anwendet - dummies

Mit der bedingten Formatierung von excel 2010 können Sie das Aussehen von eine Zelle basierend auf ihrem Wert oder dem Wert einer anderen Zelle. Sie geben bestimmte Bedingungen an, und wenn diese Bedingungen erfüllt sind, wendet Excel die Formatierung an, die Sie auswählen. Sie können die bedingte Formatierung verwenden, um Datumsangaben zu suchen, die bestimmte Kriterien erfüllen (z. B. fallen auf ...

Die Wahl des Herausgebers

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

ASVAB Vorbereitung: Wie man Brüche multipliziert und dividiert - Dummies

Es wird erwartet, dass festes Verständnis des mathematischen Grundwissens, wenn Sie das ASVAB nehmen. Multiplizieren und Dividieren von Brüchen sind zwei der Dinge, die Sie wissen müssen. Fraktionen multiplizieren Fraktionen multiplizieren ist sehr einfach. Alles, was Sie tun müssen, ist, die Zähler untereinander zu multiplizieren und die Nenner mit ... zu multiplizieren.

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

ASVAB-Praxis: Beispiel-Fragen zu Word-Kenntnissen - Dummies

Sie müssen für die Word-Wissensprobleme bereit sein auf dem ASVAB. Das Format, das Sie unten sehen, ist ein gutes Beispiel dafür, was Sie finden werden, wenn Sie das ASVAB benutzen. Beispielfragen Wortwissenszeit: 11 Minuten für 35 Fragen Anleitung: Der Wortwissensubtest ist der dritte Untertest ...

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

ASVAB: Paragraph Comprehension Subtest Beispiel Testfragen - Dummies

Zeit für Sie, all Ihre ASVAB Vorbereitung zur guten Verwendung. Fragen Sie sich anhand der folgenden Beispieltestfragen, ob Ihr Leseverständnis auf dem neuesten Stand ist. Lesen Sie jeden kurzen Absatz, dem eine oder mehrere Fragen zu den in dieser Passage enthaltenen Informationen folgen. Achten Sie darauf, den Absatz sorgfältig zu lesen ...

Die Wahl des Herausgebers

Zoomen und Schwenken in AutoCAD - Dummys

Zoomen und Schwenken in AutoCAD - Dummys

AutoCAD erleichtert das Schwenken, indem es Bildlaufleisten und Echtzeit-Schwenken bietet. Beim Echtzeit-Panning (im Gegensatz zum Vorgabezeit-Panning?) Können Sie Objekte auf dem Bildschirm sehen, wenn Sie die Maus nach oben und unten oder vor und zurück bewegen. Natürlich bewegt sich der Standpunkt, nicht die Objekte. Sowohl das Schwenken als auch das Zoomen ändern die Ansicht ...

Mit AutoCAD LT 2005 DesignCenter - Dummies

Mit AutoCAD LT 2005 DesignCenter - Dummies

DesignCenter ist ein dummer Name für eine nützliche, wenn auch etwas ausgelastete Palette. Die DesignCenter-Palette ist praktisch für das Extrahieren von Daten aus allen Arten von Zeichnungen. Während sich die Eigenschaftenpalette mit Objekteigenschaften beschäftigt, behandelt die DesignCenter-Palette hauptsächlich benannte Objekte: Ebenen, Linientypen, Blockdefinitionen (dh Symboldefinitionen), Textstile und andere Organisationsobjekte ...

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Was Sie über AutoCAD-Koordinatensysteme wissen sollten - Dummies

Jeder Punkt in einer AutoCAD-Zeichnungsdatei kann identifiziert werden durch seine X-, Y-, Z-Koordinaten. (In den meisten 2D-Zeichnungen ist der Z-Koordinatenwert 0. 0.) Dieses Koordinatensystem wird in AutoCAD als Weltkoordinatensystem oder WCS bezeichnet. Koordinateneingabe Die direkteste Methode, um Punkte präzise einzugeben, ist die Eingabe von Zahlen mit dem ...