


Das Weiße Haus hat ein Dokument herausgegeben, in dem Entwickler aufgefordert werden, C und C++ aufzugeben: Rust wurde wegen der Speichersicherheit „handverlesen'.
Kürzlich hat das Büro des National Cyber Director (ONCD) des Weißen Hauses in einem 19-seitigen Bericht einen wichtigen Punkt hervorgehoben: Entwickler sollten speichersichere Programmiersprachen wie die Sprache Rust einführen. Der Bericht weist darauf hin, dass die Wahl einer speichersicheren Programmiersprache ein wichtiger Weg ist, um sicherzustellen, dass Software auf sichere Weise entwickelt wird.
ONCD wies außerdem darauf hin, dass die Empfehlungen im Bericht in Zusammenarbeit mit Technologieunternehmen, Hochschulen und anderen Institutionen entwickelt wurden und von einer Reihe bekannter Technologieunternehmen unterstützt werden, darunter HP, Accenture und Palantir.
Berichtsadresse: https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf
Eigentlich ist dies nicht offiziell von In den Vereinigten Staaten fordern Organisationen erstmals eine Abkehr von C und C++.
Im Dezember letzten Jahres veröffentlichte die U.S. Cybersecurity and Infrastructure Agency (CISA) zusammen mit anderen Behörden einen „Memory Security Roadmap Guide“, in dem sie C und C++ als speicherunsichere Programmiersprachen hervorhob und dabei betonte, dass Softwareentwicklungsanbieter dies tun sollten übernehmen Sie andere speichersichere Programmiersprachen wie Rust und Java. Der Zweck dieses Leitfadens besteht darin, das Bewusstsein für Speichersicherheitsprobleme in der Softwareentwicklung zu schärfen und die Einführung zuverlässigerer Programmiersprachen zu fördern, um potenzielle Sicherheitslücken zu verringern. CISA betont insbesondere die Bedeutung der Einführung speichersicherer Programmiersprachen, da dies dazu beiträgt, das Risiko böswilliger Angriffe und Datenlecks zu verringern. Dieser Schritt soll auch die Entwicklung der Softwareentwicklungsbranche in eine sicherere und zuverlässigere Richtung fördern,
Quelle: https://www.cisa.gov/sites/default/files/2023-12/ The-Case -for-Memory-Safe-Roadmaps-508c.pdf
Verlassen Sie C und C++, wenden Sie sich an Rust, nur für die Speichersicherheit
Es ist wichtig, die Verwendung speichersicherer Programmiersprachen hervorzuheben. Da die Speichersicherheit Vorkommnisse wie Pufferung verhindern kann, können Probleme wie Bereichsüberlauf und baumelnde Zeiger zu Fehlern und Schwachstellen führen. Daher ist es wichtig, das Konzept der Speichersicherheit zu verstehen.
Wie schädlich ist Gedächtnisunsicherheit? Im Jahr 2019 berichteten Microsoft-Sicherheitsingenieure, dass etwa 70 % der Sicherheitsprobleme durch Probleme mit der Speichersicherheit verursacht wurden. Im Jahr 2020 meldete Google ähnliche Daten zu Fehlern, die im Chromium-Browser entdeckt wurden.
Für Programmiersprachen erlauben sowohl C als auch C++ die Arithmetik beliebiger Zeiger unter Verwendung direkter Speicheradressen ohne Grenzprüfung. Der Bericht weist darauf hin, dass Experten herausgefunden haben, dass einige Programmiersprachen, repräsentiert durch C und C++, beide keine speichersicherheitsrelevanten Funktionen aufweisen und in einigen kritischen Systemen weit verbreitet sind. Daher gelten C und C++ als „unsichere“ Programmiersprachen.
Äquivalent zu C und C++ gilt Rust als klassisches Beispiel einer speichersicheren Programmiersprache. Rust ist eine Systemprogrammiersprache, die sich auf Sicherheit, insbesondere Parallelitätssicherheit, konzentriert. Es unterstützt Multiparadigmensprachen wie funktionale, imperative und generische Programmierparadigmen und wird auch von Deep-Learning-Frameworks wie TensorFlow als hervorragende Front-End-Sprache verwendet.
Im Entwicklerumfragebericht 2021 der Programmierer-Frage- und Antwort-Website Stack Overflow wurde die Rust-Sprache zur beliebtesten Programmiersprache unter Entwicklern. Einer der Gründe, warum Rust in der Welt der Systemprogrammierung so beliebt ist, besteht darin, dass es dabei helfen kann, speicherbezogene Sicherheitslücken zu schließen.
Die Speichersicherheitsfunktionen von Rust wurden seit langem von der Industrie überprüft. Im April 2021 kündigte Google an, dass Android die Sprache Rust unterstützen werde. Der Grund dafür ist, dass Speichersicherheitsfehler in C und C++ die am schwierigsten zu behebenden Fehlerquellen sind. Google hat viel Mühe und Ressourcen investiert, um solche Fehler zu erkennen, zu beheben und zu mildern und das Eindringen einer großen Anzahl von Fehlern wirksam zu verhindern Android-Version.
Allerdings bleiben Sicherheitslücken im Speicher trotz dieser Bemühungen die Hauptursache für Stabilitätsprobleme und machen im Laufe der Zeit etwa 70 % der kritischen Sicherheitslücken von Android aus. Daher hat Google eine dritte Option, Rust, für Betriebssystementwickler hinzugefügt.
Dan Grossman, Professor für Informatik an der University of Washington, sagte, dass jeder seit Jahrzehnten um die Gefahren von C und C++ wisse und es nun endlich ein guter Zeitpunkt sei, speichersichere Programmiersprachen dort zu fördern sind praktische und ausgereifte Alternativen.
Er glaubt auch, dass die Abschaffung von C und C++ nicht über Nacht gelingen kann, insbesondere in eingebetteten Systemen. Es wird jedoch erwartet, dass sich dieser Prozess beschleunigen wird, da andere Programmiersprachen wie Rust in der Systemsoftware immer häufiger zum Einsatz kommen.
Was die offizielle Einstellung zu C und C++ betrifft, scheinen nicht mehr Leute es zu kaufen.
Manche Leute denken, dass modernes C++ speichersicher ist und alle Betriebssysteme C oder C++ zum Programmieren verwenden. Einige Leute glauben auch, dass modernes C++ mehr „Schutzmaßnahmen“ aufweist und kostengünstig oder sogar kostenlos ist, auch wenn C++ nicht speichersicher ist.
Für Rust, das wegen der Speichersicherheit „handverlesen“ wurde, sind einige Leute der Meinung, dass der Grad der Unterstützung nicht so hoch ist und es einer Integration in Regierungssysteme nicht würdig ist.
Welche anderen speichersicheren Programmiersprachen gibt es neben Rust?
Im November 2022 veröffentlichte die National Security Agency (NSA) ein Informationsblatt zur Cybersicherheit, in dem sie detailliert darlegt, was sie berücksichtigt Speichersichere Programmiersprachen. Programmiersprache
- Rust
- Go
- C#
- Java
- Swift
- J avaScript
- Ruby
- Python
- Delphi/Object Pascal
- Ada
Wie beliebt sind die oben genannten Programmiersprachen? Der Programmiersprachen-Popularitätsindex TIOBE vom Februar 2024 zeigt, dass Python an erster Stelle steht, C# an fünfter Stelle, Java an vierter Stelle, JavaScript an sechster Stelle, Go an achter Stelle und Delphi/Object Pascal an zwölfter Stelle, Rust an zweiter Stelle Platz 18 und Ruby belegte knapp den 20. Platz.
Wie Sie sehen, sind die meisten von der NSA ausgewählten Sprachen in den Top 20, nur Ada ist nicht dabei, aber es sind nur 5 in den Top Ten.
Quelle: https://www.tiobe.com/tiobe-index/
Der Bericht fordert auch eine bessere Messung der Softwaresicherheit. ONCD glaubt: Bessere Kennzahlen ermöglichen es Technologieanbietern, Schwachstellen besser zu planen, vorherzusagen und zu mindern, bevor sie zu einem Problem werden.
Der Bericht geht auch auf die Apollo-13-Mission ein, die die NASA als „erfolgreichen Misserfolg“ einstufte. Die Mission selbst erlitt einen katastrophalen Misserfolg, und die drei Astronauten führten vorübergehende Reparaturen durch und milderten einige der Probleme, um sicher nach Hause zurückzukehren. Im Bericht heißt es: Speichersicherheitscodes sind für das Raumfahrtprogramm sehr wichtig. Die menschliche Erforschung des Weltraums sollte eine speichersichere Sprache verwenden, eine Sprache, die so nah wie möglich am Kernel ist, um zukünftige Unfälle zu vermeiden.
Da immer mehr Teile der Welt digitalisiert werden, wird bessere Codierung immer wichtiger und schlechter Code kann böswillig verwendet werden.
Rust Language
Rust Language ist eine universelle, kompilierte Programmiersprache unter der Leitung von Mozilla. Die Entwurfskriterien sind „Sicherheit, Parallelität und Praktikabilität“ und unterstützen funktionale, gleichzeitige, prozedurale und objektorientierte Programmierstile.
Der wichtigste Vorteil der Rust-Sprache besteht darin, dass sie Speichersicherheitsgarantien ohne zusätzlichen Leistungsverlust bieten kann. Im Entwicklungsprozess herkömmlicher Programmiersprachen auf Systemebene (C/C++) kommt es häufig zu Abstürzen oder Fehlern aufgrund verschiedener Speicherfehler wie Nullzeiger, Wildzeiger, Speicherlecks, Speicher außerhalb der Grenzen, Segfaults usw. Datenrennen und Iterationen. Gerätefehler usw.
Speicherprobleme stellen eine große versteckte Gefahr für die Programmstabilität und -sicherheit dar und sind ein wesentlicher Faktor, der die Entwicklungseffizienz beeinträchtigt. Die beiden großen Technologiegiganten Google und Microsoft haben erklärt, dass 70 % der Programmsicherheitsprobleme in ihren wichtigen Produkten durch Speicherprobleme verursacht werden, und beide Giganten erwägen den Einsatz der Rust-Sprache zur Lösung von Speichersicherheitsproblemen.
Darüber hinaus verfügt Rust auch über hervorragende plattformübergreifende Fähigkeiten, unterstützt die übergreifende Kompilierung und ist auch für eingebettete Umgebungen geeignet.
Allerdings weist die Rust-Sprache auch einige knifflige Mängel auf.
Da Rust eine spezielle Syntax hat, ist der Einstieg für Anfänger etwas schwierig, z. B. „Lifetime“. Im Vergleich dazu sind Sprachen wie Python und Java einfacher und leichter zu erlernen. Wenn Sie die Sprache C++ jedoch bereits kennen, ist das Erlernen der Sprache Rust viel einfacher, da sie viel von der C++-Syntax übernimmt.
Zweitens ist die Compilerprüfung der Rust-Sprache sehr streng und der größte Teil des Entwicklungsprozesses wird mit der Lösung von Kompilierungsproblemen verbracht. Sobald die Kompilierung jedoch abgeschlossen ist, müssen sich Entwickler keine Gedanken mehr über Speichersicherheit, Speicherlecks und andere Probleme machen, sondern müssen sich nur auf die Geschäftslogik konzentrieren.
Das obige ist der detaillierte Inhalt vonDas Weiße Haus hat ein Dokument herausgegeben, in dem Entwickler aufgefordert werden, C und C++ aufzugeben: Rust wurde wegen der Speichersicherheit „handverlesen'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Es gibt viele Gründe, warum MySQL Startup fehlschlägt und durch Überprüfung des Fehlerprotokolls diagnostiziert werden kann. Zu den allgemeinen Ursachen gehören Portkonflikte (prüfen Portbelegung und Änderung der Konfiguration), Berechtigungsprobleme (Überprüfen Sie den Dienst Ausführen von Benutzerberechtigungen), Konfigurationsdateifehler (Überprüfung der Parametereinstellungen), Datenverzeichniskorruption (Wiederherstellung von Daten oder Wiederaufbautabellenraum), InnoDB-Tabellenraumprobleme (prüfen IBDATA1-Dateien), Plug-in-Ladeversagen (Überprüfen Sie Fehlerprotokolle). Wenn Sie Probleme lösen, sollten Sie sie anhand des Fehlerprotokolls analysieren, die Hauptursache des Problems finden und die Gewohnheit entwickeln, Daten regelmäßig zu unterstützen, um Probleme zu verhindern und zu lösen.

MySQL kann JSON -Daten zurückgeben. Die JSON_EXTRACT -Funktion extrahiert Feldwerte. Über komplexe Abfragen sollten Sie die Where -Klausel verwenden, um JSON -Daten zu filtern, aber auf die Leistungsauswirkungen achten. Die Unterstützung von MySQL für JSON nimmt ständig zu, und es wird empfohlen, auf die neuesten Versionen und Funktionen zu achten.

Detaillierte Erläuterung von Datenbanksäureattributen Säureattribute sind eine Reihe von Regeln, um die Zuverlässigkeit und Konsistenz von Datenbanktransaktionen sicherzustellen. Sie definieren, wie Datenbanksysteme Transaktionen umgehen, und sorgen dafür, dass die Datenintegrität und -genauigkeit auch im Falle von Systemabstürzen, Leistungsunterbrechungen oder mehreren Benutzern gleichzeitiger Zugriff. Säureattributübersicht Atomizität: Eine Transaktion wird als unteilbare Einheit angesehen. Jeder Teil schlägt fehl, die gesamte Transaktion wird zurückgerollt und die Datenbank behält keine Änderungen bei. Wenn beispielsweise eine Banküberweisung von einem Konto abgezogen wird, jedoch nicht auf ein anderes erhöht wird, wird der gesamte Betrieb widerrufen. begintransaktion; updateAccountsSetBalance = Balance-100WH

SQllimit -Klausel: Steuern Sie die Anzahl der Zeilen in Abfrageergebnissen. Die Grenzklausel in SQL wird verwendet, um die Anzahl der von der Abfrage zurückgegebenen Zeilen zu begrenzen. Dies ist sehr nützlich, wenn große Datensätze, paginierte Anzeigen und Testdaten verarbeitet werden und die Abfrageeffizienz effektiv verbessern können. Grundlegende Syntax der Syntax: SelectColumn1, Spalte2, ... Fromtable_Namelimitnumber_of_rows; number_of_rows: Geben Sie die Anzahl der zurückgegebenen Zeilen an. Syntax mit Offset: SelectColumn1, Spalte2, ... Fromtable_NamelimitOffset, Number_of_rows; Offset: Skip überspringen

Die MySQL-Datenbankleistung Optimierungshandbuch In ressourcenintensiven Anwendungen spielt die MySQL-Datenbank eine entscheidende Rolle und ist für die Verwaltung massiver Transaktionen verantwortlich. Mit der Erweiterung der Anwendung werden jedoch die Datenbankleistung Engpässe häufig zu einer Einschränkung. In diesem Artikel werden eine Reihe effektiver Strategien zur Leistungsoptimierung von MySQL -Leistung untersucht, um sicherzustellen, dass Ihre Anwendung unter hohen Lasten effizient und reaktionsschnell bleibt. Wir werden tatsächliche Fälle kombinieren, um eingehende Schlüsseltechnologien wie Indexierung, Abfrageoptimierung, Datenbankdesign und Caching zu erklären. 1. Das Design der Datenbankarchitektur und die optimierte Datenbankarchitektur sind der Eckpfeiler der MySQL -Leistungsoptimierung. Hier sind einige Kernprinzipien: Die Auswahl des richtigen Datentyps und die Auswahl des kleinsten Datentyps, der den Anforderungen entspricht, kann nicht nur Speicherplatz speichern, sondern auch die Datenverarbeitungsgeschwindigkeit verbessern.

Der MySQL -Primärschlüssel kann nicht leer sein, da der Primärschlüssel ein Schlüsselattribut ist, das jede Zeile in der Datenbank eindeutig identifiziert. Wenn der Primärschlüssel leer sein kann, kann der Datensatz nicht eindeutig identifiziert werden, was zu Datenverwirrung führt. Wenn Sie selbstsinkrementelle Ganzzahlsspalten oder UUIDs als Primärschlüssel verwenden, sollten Sie Faktoren wie Effizienz und Raumbelegung berücksichtigen und eine geeignete Lösung auswählen.

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

Eine effektive Überwachung von MySQL- und MariADB -Datenbanken ist entscheidend für die Aufrechterhaltung einer optimalen Leistung, die Identifizierung potenzieller Engpässe und die Gewährleistung der Zuverlässigkeit des Gesamtsystems. Prometheus MySQL Exporteur ist ein leistungsstarkes Tool, das detaillierte Einblicke in Datenbankmetriken bietet, die für die proaktive Verwaltung und Fehlerbehebung von entscheidender Bedeutung sind.
