Hat Java Pufferüberläufe?
Nicht-Java buffer overflows?
Wenn ja können Sie mir Szenarien?
InformationsquelleAutor der Frage ecleel | 2009-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht-Java buffer overflows?
Wenn ja können Sie mir Szenarien?
InformationsquelleAutor der Frage ecleel | 2009-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Java Strings basieren auf char-arrays und Java überprüft automatisch, ob array-Grenzen, buffer overflows sind nur möglich in ungewöhnlichen Szenarien:
InformationsquelleAutor der Antwort Michael Borgwardt
Managed Sprachen wie Java und C# haben diese Probleme nicht, aber der bestimmten virtuellen Maschinen (JVM/CLR/etc), die eigentlich den code ausführen kann.
InformationsquelleAutor der Antwort Brian Rasmussen
Für alle Absichten und Zwecke, Nein.
Java array bounds checkingdie überprüfen, dass die Daten nicht zugegriffen werden kann, vom Bereich außerhalb des zugewiesenen Arrays. Wenn man versucht, auf Bereich, der außerhalb der Größe des Arrays, eine
ArrayOutOfBounds
Ausnahme geworfen wird.Wenn es ein Pufferüberlauf, es ist wohl von einem Fehler in der Java Virtual Machine, und ist, meines Wissens, nicht das beabsichtigte Verhalten, das ist geschrieben in der Sprache Java-Spezifikationen noch die Java Virtual Machine Spezifikationen.
InformationsquelleAutor der Antwort coobird
Ja und Nein. Nein, dass kann man nicht wirklich erstellen Sie versehentlich öffnen Sie sich bis zu einem Pufferüberlauf, weil es ein managed-memory-Modell. Allerdings kann es auch buffer-overflow-Sicherheitslücken in der JVM und JDK. Siehe das Secunia advisory:
http://secunia.com/advisories/25295
InformationsquelleAutor der Antwort BobbyShaftoe
Einen Puffer-überlauf in dem Sinne, überschreiben den stack oder heap selbst würde erfordern, entweder:
Einen Puffer-überlauf in dem Sinne, dass Sie code mit Hilfe eines Puffers und Ihr code ist verantwortlich für die Analyse richtig aber nicht so möglich ist.
Zum Beispiel könnten Sie schreiben ein XML-parser und jemand könnte Sie mit einer fehlerhaften (oder legitim, aber ungewöhnlich) verlangen, der wegen der Gestaltung Ihres parser überschreibt zuvor validierten Daten mit einigen Nutzlast dazu führen würde, dass Ihre Anwendung sich schlecht zu benehmen.
Diese letztere form ist weniger wahrscheinlich, aber eine schlecht geschriebene sql-string Reinigungsfunktion weit verbreitet, hatte ein problem wie dieses wäre ein einladendes Ziel.
InformationsquelleAutor der Antwort ShuggyCoUk
Java (und .Net virtuellen Maschinen catch-code, der versucht zu schreiben, außerhalb des reservierten Speichers. Anwendungen, die nicht diese richtig verarbeiten können immer noch bewirken, dass die Sicherheit Probleme. Wenn böswillige Benutzer auslösen können Ausnahmen durch die Eingabe Ungültiger Eingabe Sie tun können denial-of-service-Attacken zum Beispiel.
InformationsquelleAutor der Antwort Mendelt
Wie bereits darauf hingewiesen worden, daß Java als Sprache, bounds checking auf alle Speicher zugreifen, und wenn es ein Fehler ist, hier ist die JVM Schuld und nicht das Programm. Jedoch, was sollte beachtet werden, das ist ein ähnliches argument, um memory leaks in Java; zwar nicht möglich, smash stack, eine ArrayOutOfBoundsException an der falschen Stelle, die nicht richtig behandelt werden, können noch bis Ende vermasseln Ihrem system.
InformationsquelleAutor der Antwort falstro
Könnten Sie möglicherweise einen Puffer-überlauf in ein Java-Programm, wenn Sie wurden mit dem Java Native Interface (JNI) Einrichtung zum aufrufen von externem code und externer code hatte ein ausnutzbares Problem. Das ist ziemlich ungewöhnlich, da die meisten Anwendungen vermeiden Sie die Verwendung von JNI, wo möglich.
InformationsquelleAutor der Antwort Tim Howland
Ist es möglich für eine Methode zum schreiben in gültigen Einträge in einem array, dass es nicht die Absicht, in der Regel durch ein integer-überlauf.
Beispielsweise der folgenden ist nicht ausreichend, um zu überprüfen, Grenzen:
IIRC,
StringBuffer
hatte mal einen bug, aber es gab nichts, was Sie interessant machen könnte.InformationsquelleAutor der Antwort Tom Hawtin - tackline
Eines der Hauptmerkmale von JAVA ist die Sicherheit. Programme geschrieben in interpretierten Sprachen sind nicht anfällig für buffer-overflow-exploit, aber Sie führen immer zu einem Puffer-überlauf in der Interpreter selbst.
Obwohl es schwierig sein wird. Ähnlich wie Python ist auch eine interpretierte Sprache und ist sicher vor buffer-overflow.
Danke..
InformationsquelleAutor der Antwort ABHISHEK SRIVASTAVA