Sichern Sie Kodierung-Praxis

Dieser Artikel forscht in die technischeren Aspekte der Sicherheit im Code, der verwendet wird, um eine Anwendung einzuführen und liefert Richtlinien, um einen Durchführungprozeß für sichere Implementierung zu entwickeln. Das Potential für Verwundbarkeit in einer Anwendung wird durch ein starkes Design, aber die Implementierung der Anwendung Dichtungen sein Schicksal verringert. Harte Arbeit goß in ein sicheres Design wird inkonsequent, wenn die Implementierung schlecht erfolgt ist. Es ist auch wichtig, zu verstehen, daß die Einbeziehung der Sicherheit-in Verbindung stehenden Technologien oder der Designmethoden notwendigerweise kein Niveau der Sicherheit innerhalb einer Anwendung andeutet oder garantiert. Die Implementierung einer verwendeten Anwendung und jeder möglicher Sicherheitstechnik ist einer der abschließenden Bestandteile, der ein hohes Niveau der Zuverlässigkeit holt.

Analyse in der Implementierung Phase ist die Verantwortlichkeit der Entwickler und der Entwicklung Manager. Entwickler sind für das Design gut einführen verantwortlich, während Manager für das Festlegen des Prozesses verantwortlich sind, der eine gute Implementierung sicherstellt. Dieses kann über standardisierte Verfahren, die dokumentierte Entwicklung und Kodierungstandard-, -design- und - schreibtischtests für ein Programm einschließen, und Entwicklertraining getan werden hinsichtlich der Sicherheit in der Anwendung Entwicklung. Diese Verfahren fördern die Entwickler und die Anwendungen, unabhängig davon die Sprachen verwendet werden, oder die Art der Anwendung entwickelt.

Die am allgemeinsten verwendeten Sprachen sind heute die C Programmiersprache, das Java und die scripting Sprachen wie Perl und die UNIX Oberteile. Jedes dieser Sprachen und Klimas kann unsachgemäß verwendet werden, um sich die Sicherheit einer Anwendung und des Systems zu vergleichen, auf denen sie läuft. Jedoch ist dieser Artikel nicht eine Checkliste, damit Entwickler folgen. Stattdessen läßt die Entwicklung eines Sicherheit-fokussierten Gedanke Prozesses eine diskutierbar stärkere Kodierungpraxis zu.

Gefahren durch das C

Die C Programmiersprachen, die C, C++ und Gegenstand-C einschließen, sind die am allgemeinsten verwendeten Sprachen und können in den unsicheren Händen gefährlich sein. Sie befähigen den Entwickler, viele Teile des Systems, wie Gedächtnis, der Akten und der Vorrichtungen zu manipulieren und zu erreichen. Dieses ist eine große Stärke der C Sprachen, aber Gefahr entsteht, wenn der Entwickler Fehler macht. C liefert ein hohes Niveau des Zuganges zum zugrundeliegenden Betriebssystem, und es gibt wenige Überprüfungen und Balancen, zum des Entwicklers zu schützen. Wenn der Entwickler irrtümlich Daten zur falschen Vorrichtung oder Gedächtnisposition schreibt, tut das C Programm was auch immer der Entwickler schreibt, unabhängig davon die Daten oder den Bestimmungsort.

  

Der erste verletzbare Bereich, der häufig mit C verbunden ist, ist der Pufferüberlauf. Der folgende Beispielcode zeigt einen sehr grundlegenden Überlauf:

Putzfrau string[10 ];
Strcpy(string, "AAAAAAAAAAAAAAA");  / * 15 "A"
Buchstaben 

Hier werden 15 "A" Buchstaben in den Gedächtnisbereich für eine variable Zeichenkette kopiert, die erklärt wird, um eine statische 10-character Reihe zu sein. Die strcpy() Funktion tut genau, wie ohne Respekt für die Größe der Daten, die kopiert werden oder der Position verwiesen, zu denen sie geht. Ein Pufferüberlauf tritt, wenn das 11. Element in die Gedächtnisposition kopiert wird, direkt nach der Position des 10. Elements der variablen Zeichenkette auf. Wenden Sie jetzt diese Grundregel an allen möglichen Eingang Daten, die von einer externen Quelle kommt an und die Zeichenkette "A" der Buchstaben ersetzen. Dieses erlaubt Angreifern, die Effekte des Überlauf zu steuern.

Die strcpy() Funktion ist eine einiger Funktionen in C, die keine überprüfenden Grenzen durchführen und erlauben, daß willkürlich sortierte Puffer kopiert werden. Andere zu vermeiden Funktionen sind gets(), strcat(), sprintf() und die scanf() Familie von Funktionen. Es gibt aktualisierte Versionen von einigen dieser Funktionen, die die Längen gewähren, die kopiert werden spezifiziert zu werden. Diese sind strncpy(), strncat(), snprintf() und fgets(). Diese änderten Funktionen kopieren nur bis zur Zahl den Buchstaben, die durch den Länge Parameter spezifiziert wurden. Höchstens werden Länge Buchstaben von der Quelle in Bestimmungsort kopiert:

strncpy(destination, Quelle, Länge);

Spitze

Wenn sie die "n" Versionen des Zeichenkettehandhabung Funktionen strncpy()—verwenden, sind strncat(), snprintf() und—fgets(), daß die Länge nicht größer als die Bestimmungsortzeichenkette ist, anstatt die Quellzeichenkette sicher. Der Puffer kann überlaufen werden, wenn der Länge Wert größer als die Größe des Bestimmungsortpuffers ist.

Wenn Sie Zeiger zu den Puffern, anstelle von statisch erklärten Puffern verwenden, müssen Sie genügend Gedächtnis zuteilen, um die Werte zu speichern, die kopiert werden. Verwenden Sie die Gedächtnishandhabung Funktionen, die Ihnen erlauben, Länge zu spezifizieren.

Spitze

Wenn Sie Gedächtnis für Zeichenkettedaten zuteilen, vergessen Sie nicht, 1 der Gesamtlänge hinzuzufügen, um für den UNGÜLTIGEN beendenden Buchstaben unterzubringen. Ohne einen UNGÜLTIGEN Abschlußwiderstand die Daten im Gedächtnis direkt, nachdem den letzten Buchstaben der Zeichenkette gelten konnte als Teil der Zeichenkette.

Diese Funktionen sind nicht die einzigen Plätze, in denen Pufferüberlauf auftritt. Seien Sie sicher, zu prüfen, ob Informationen lasen, kopiert oder geschrieben zu jeder möglicher Gedächtnisposition oder einer Variable zugewiesen paßt oder daß der zugeteilte Bestimmungsort genügend Speicherplatz hat.

Spitze

Um Pufferüberlauf in Ihrem Code zu vermeiden, seien Sie sicher Eingang zu validieren. Überprüfen Sie die Größe der Daten und der Speicherposition und verwenden Sie Handhabung Funktionen, die Entwickler-spezifizierte Mengen Informationen anstelle willkürlich lang von den Klumpen von Daten erzeugen.

Rennenzustände fügen ein Niveau der Kompliziertheit dem Verwenden des C Codes hinzu. Rennenzustände können in zwei Aspekten C Codekreation des Der Reihe nach ordnens—und des Schutzes ausgenutzt werden.

Das Der Reihe nach ordnen bezieht sich den auf Auftrag, in dem Fälle in einer Anwendung auftreten. Rennenzustände können aus dem Der Reihe nach ordnen von von Veränderungen zwischen abhängigen Fällen resultieren, wenn keine Überprüfung zwischen den Fällen erfolgt ist. Dieses bedeutet häufig einen Fehler in allen verwendeten error-checking und Gültigkeitserklärungprogrammen. Wenn zwei Funktionen normalerweise der Reihe nach laufen und die zweite Funktion annimmt, daß die Resultate des ersten gültig sind, dann besteht die Möglichkeit für einen Rennenzustand. Erhöhte Privilegien sind häufig Ziele des Angriffs. Die Organisation, kombiniert mit Der Reihe nach ordnen und der Fehlerprüfung, setzt die Möglichkeit für Rennenzustände herab.

Dieses ist eine schlechte Implementierung, die einen Rennenzustand verursacht:

increase_privs();
...
Wert = special_app_function(); / * erfordert
Privileg*/
other_unreleted_function(); / * erfordert 
nicht Privileg*/
other_unreleated_function2(); / * * dito,/
special_dependent_function(value); / * 
erfordert Privileg*/
...
exit();

Hier treten ein Paar der unsicheren Praxis auf. Die Privilegien der Anwendung werden früh in der Anwendung erhöht, aber verwendet nicht bis später. Sie werden auch nie, so die meiste Funktionalität durchführen mit hoch-als-erforderlichen Privilegniveaus abgetreten. Schließlich wird der Rennenzustand durch schlechte Organisation verursacht, die—abhängige Funktionen nicht nahe einander auftreten. Ein Beispiel, das diese Probleme löst, ist

increase_privs();
Wert = special_app_function; / * erfordert 
Privileg*/
wenn (!validate_function(value)/* versichern Sie 
der Sicherheit von Wert*/
{
    do_error_processing(value); / * tun Sie 
etwas, das mit Störung intelligent ist */
}
special_dependent_function(value); / * 
erfordert Privileg*/
decrease_privs(); / * benötigen Sie nicht 
mehr Privileg*/
 
other_unreleted_function(); / * erfordert 
nicht Privileg*/
other_unreleated_function2(); / * * dito,/

Merken Sie die spezielle Gültigkeitserklärung und die Fehlerbehandlungsroutinen, die verwendet werden, bevor man den Wert zu einer anderen Funktion führt.

Spitze

Organisieren Sie Funktionalität und kombinieren Sie sie mit Gültigkeitserklärung, um sicherzugehen, daß erwartete Informationen nicht zwischen abhängigen Fällen verglichen werden.

Viele Rennenzustände bestehen als das Resultat des schlechten temporäre Akte Verbrauches. Wenn diese Akten hergestellt werden, sollten sie gegen externen Angriff während des Betriebes geschützt werden. UNIX und Windows erlaubt dem Entwickler, die Erlaubnisspitzen und die funktionsfähigen Markierungsfahnen einzustellen, wenn sie eine Akte herstellen. Erlaubnis wenn Zugang zu jedermann mißbilligen Sie, aber der Inhaber des Prozesses. Wenn Sie die Akte mit dem open() Anruf herstellen, stellen Sie die O_EXCL und O_CREAT Markierungsfahnen ein, die die Funktion veranlassen, eine Störung zurückzubringen, wenn die Akte, die Sie versuchen, bereits herzustellen, besteht. Weil es eine temporäre Akte ist, sollte es nicht vor der Notwendigkeit an ihm bestehen. Wenn die Akte besteht, ist dieses ein mögliches Zeichen des Angriffs. Wenn man diese Methoden verwendet, zu säubern ist auch wichtig, die Rückholwerte der Funktionen zu überprüfen und herauf alle mögliche Akten im Falle der fehlerbeschaffenheiten. Das folgende Beispiel zeigt die Syntax, um eine Akte zu öffnen,—oder, ein zu verursachen, wenn es nicht bereits mit—Erlaubnis besteht, die nur dem Schöpfer erlauben zu lesen, schreiben Sie, und führen Sie es das S_IRWXU Modusmakro verwendend durch.

open("filename", O_CREAT | O_EXCL | O_WRONLY, S_IRWXU);

Der Anruf fällt aus, im Falle daß die Akte bereits wegen der O_EXCL Markierungsfahne besteht. Auch merken Sie den unsecure Dateinamen. Die statische nennenverwendete versammlung erhöht die Gefahr des Angriffs drastisch, weil ein Bestandteil des Angriffs bereits zur Verfügung gestellt wird.

Wegen des erhöhten Vorhandenseins der temporäre Akte Rennenzustände und der verbundenen Unsicherheit, haben einige Betriebssysteme die spezifischen Funktionen, zum der temporären Akten in einer sicheren Weise herzustellen.

Entwickler können die eingebauten Akte-verriegelnfähigkeiten eines Betriebssystems auch verwenden, um Zugang zu den Akten zu steuern. Diese Methoden steuern Zugang in die grundlegenden Kernbestandteile.

Spitze

Wenn Sie temporäre Akten verwenden, randomisieren Sie die Dateinamen, stellen Sie starke Erlaubnis ein und organisieren Sie die Kreation, den Gebrauch, und den Abbau der Akten, die Möglichkeit des Angriffs herabzusetzen.

Ein anderer Bestandteil, der Zuverlässigkeit erhöht und die Sicherheit einer Anwendung beeinflussen kann, ist der Rückholwert. Während er offensichtlich scheinen konnte, ist es wichtig, die Notwendigkeit der Validierung der Rückholwerte von Funktionen zu betonen. Funktionen führen häufig serienmäßig durch und beruhen auf den Resultaten oder den Daten von einer vorhergehenden Funktion. Indem man den Rückholwert der vorhergehenden Funktionen überprüft, wird die abhängige Funktion vor der Durchführung mit unzulässigen Daten geschützt. Selbst wenn die Fälle nicht Angriffe sind, erhöht das Erholen von unregelmäßigen Bedingungen die Robustheit der Anwendung.

Dieses Beispiel zeigt eine schlechte Implementierung, die Rückholwerte überprüfen nicht kann:

n = do_string_check (Zeichenkette, valid_characters); 
/ * Funktion bringt internes zurück */
wenn (n == GOOD_RETURN)
{
    process_string(string);
}

Hier ist die Implementierung schwach, weil der negative, eine schlechte Rückkehr, nie angefaßt wird. Eine bessere Implementierung ist

n = Do_string_check(string, valid_characters); 
/ * Funktion bringt internes zurück */
wenn (n! = GOOD_RETURN)
{
    special_error_processing_routine(n); / * 
schlechter Wert, tun etwas */
}
process_string(string);

Die negative Rückkehr wird durch Dstörung verarbeitenprogramm angefaßt, das das Programm herausnehmen, eine neue Zeichenkette verlangen, oder den Rückholwert in einen gültigen Parameter umwandeln kann. Wenn der Rückholwert gut ist, geht er zum Prozeßprogramm.

Spitze

Die Kreation der mehrfachverwendbaren Fall- und Störungsprogramme liefert eine Standardeinheit, durch die alle Anwendungen zu den verschiedenen Angriffen und zu den Ausgaben reagieren. Ideen für diese Programme schließen allgemeine Gültigkeitserklärungmethoden für Zeichenkette und numerische Werte, Verpackung Funktionen ein, um Vollständigkeit Überprüfungen durchzuführen und Schutzeinheiten, die Variablen und Gedächtnispositionen validieren. Immer überprüfen Sie und verarbeiten Sie den Rückholwert einer Funktion.

 

Die folgende Spitze des Details bezieht den Gebrauch von empfindlichen Informationen innerhalb der Anwendung, einschließlich Kennwörter, Verschlüsselung oder alle anderen privaten Informationen mit ein. Wie vorher erwähnt, bestehen alle Programminformationen in den Bereichen der allgemeinen Lache des Gedächtnisses, die abhängig von Messwert und Änderung durch externe Verfahren sein kann. Es ist vorteilhaft, das Gedächtnis zu löschen, wenn die Informationen nicht mehr innen Gebrauch sind, um Informationen, während eines Angriffs aufzudecken zu vermeiden. Die allgemeinste und genügendste Methode zu den freien Daten, diese gekennzeichnet gewöhnlich als, auf Null einstellend aus Gedächtnis. Wenn gespeicherte Informationen nicht mehr benötigt werden, sollten die Speicherpositionen mit null oder gelegentlichen Daten überschrieben werden, um zu verhindern, daß ein Angreifer die Informationen über Gedächtnis oder Kernspeicherabzüge zurückgewinnt. Dieses Verfahren wird besonders wichtig, wenn Verschlüsselung im Gebrauch ist. Die Schlüssel verwendeten zu verschlüsseln und Decryptanzeigen sind die wichtigsten Stücke eines Schlüsselsystems und des alles, das möglich ist, sie zu schützen Notwendigkeiten getan zu werden.

Diese Richtlinien illustrieren einige der allgemeinen Ausgaben, die in C-gegründeten Anwendungen entstehen. C ist ein sehr populäres und bedeutende Sprache, die erlaubt, stellt große Flexibilität zum Entwickler und Obacht sollte mit seinem Gebrauch genommen werden zur Verfügung.

Ein Perl einer Anwendung

Perl ist ein interessantes Tier, das viele des Nutzens einer strukturierten programmierensprach- Sprache, wie C, mit der Flexibilität und der Integration eines UNIX Oberteils kombiniert. Perl erlaubt dem Entwickler, Verfahren oder Subroutinen zu verursachen, Variablen zu definieren und die Anwendungen und Befehle zu verwenden, die mit dem Betriebssystem vorhanden sind. Diese Fähigkeiten und seine Stärke mit regelmäßigen Ausdrücken und Satzgliederung, Geben Perl eine starke Anwesenheit in den Netzanwendungen, System Leitung und Automatisierung.

Perl Programme sind nicht im Allgemeinen gegen Pufferüberlauf wegen der schwach geschriebenen Natur seiner Variablen und Erklärungen empfindlilch. Anders als C worin Variablen und Gedächtnis als bestimmte Speicherkategorie definiert werden müssen und Gedächtnis für sie zugeteilt werden muß, tut Perl alles automatisch und behandelt alles als Zeichenkettedaten. Nehmen Sie das folgende Beispiel:

#!/path/to/perl
$one = 1;
$one_s = "1";  # kein unterschiedliches als 
$one
$two = $one + #; # ist das 
Resultat 2 oder "2", die gleichwertig sind

In C würde dem variablen $one wahrscheinlich eine Ganzzahl und #, eine Zeichenkette erklärt. Die Hinzufügung der zwei Elemente würde auch einen fehlerhaften Wert ergeben. Perl unterscheidet nicht zwischen den unterschiedlichen Arten, also wird $two 2 zugewiesen, oder "2"—sind sie in Perl gleichwertig. Die Sprache auch fällt Opfer nicht auf die Speicherallozierunganforderungen, die andere Sprachen ausstellen. Das folgende Beispiel ist in Perl vollständig annehmbar:

#!/path/to/perl
$var1 = "AAAAA";
$var2 = "BBBB";
$var2 = #; # wird $var2 "AAAAA";

$var2 nimmt auf dem neuen Wert von fünf "A" Buchstaben. Alle Variablen werden dynamisch zugeteilt; es gibt kein Konzept des voreingestellten Speicherplatzes, das übergelaufen werden könnte.

Perl ist jedoch gegen Rennenzustände und die Verwundbarkeit, die mit der Durchführung der externen Programme verbunden ist empfindlilch. Obacht sollte zum Der Reihe nach ordnen von Funktionen gegeben werden. Eingang Gültigkeitserklärung ist in Perl gleichmäßig wichtig, um die Ausnutzung der externen Anwendungen zu verhindern.

Perl stützt die Fähigkeit, um Akten, ähnlich zu C und zu anderen Sprachen zu öffnen, folglich sollte der Gebrauch der temporären Akten passende Erlaubnis und Kreation Markierungsfahnen enthalten.

Der Gebrauch Perl in Netz-gegründeten cgi Programmen ist auch extrem populär. Die größten Gefahren verbanden mit seinem Gebrauch in diesem Klima auftreten während der Eingang Gültigkeitserklärung und der Durchführung der externen Systemprogramm von innen. Um die Anwendung zu schützen, können einige Vorsichtsmaßnahmen getroffen werden. Das Verwenden Färbung-überprüfen Einheiten von Perl, irgendein variabler Satz außerhalb des Programms wird nicht überschritten zu jedem möglichem Programm, das durch die Anwendung laufen gelassen wird. Alle mögliche Variablen stellten durch die verdorbene Variable werden verdorben ein. Färbung-überprüfen Sie Modus ist besonders nützlich für das Vermeiden von von Verwundbarkeit, worin ungeprüfte Benutzervariablen surreptitiously zu den Programmen geführt werden, die von der Perl Anwendung benannt werden. Um Version 5 von Perl in zu initialisieren Färbung-überprüfen Sie Modus, benutzen die folgende Indexüberschrift:

# laufen –!/path/to/perl T # in 
Färbung-überprüfen Modus

Die folgende Vorkehrung soll Eingang Werte analysieren, um Metazeichen und unerwünschte Werte zu entfernen. Dieses hilft, gegen Angriffe sich zu schützen, die das Parameter-Überschreiten zu den Oberteilen und zu anderen Anwendungen ausnutzen. Das folgende Beispiel zeigt ein einfaches Programm, das eine Eingang Zeichenkette für alle mögliche Metazeichen ablichtet, die durch ein Programm gedeutet werden konnten:

$unclean_input = &get_HTML_forms_response();
if($unclean_input = ~  tr /;|`!$&*()[]{} :'"//)
{
    # Druck aus irgendeinem HTML, das hier Ausfall 
anzeigt
    &do_some_error_reporting();
}

In diesem Fall berichtet das Programm über eine Störung, wenn ein Metazeichen gefunden wird. Alternative Methoden ersetzen Metazeichen oder fahren nur fort, wenn kein Metazeichen gefunden wird.

Eine abschließende Vorkehrung ist der Gebrauch von einem Oberteil, andere Anwendungen laufen zu lassen. Wie mit dem UNIX system() Anruf und dem Windows exec() Anruf, erlaubt der system() Anruf in Perl dem Entwickler, eine andere Anwendung laufen zu lassen. Der exec() Anruf in Perl arbeitet wie dieser Anruf in UNIX, den—der laufende Prozeß durch das Programm anzeigte ersetzt wird. Diese Funktionen können besonders gefährlich sein, wenn sie in Klimas, die Benutzer erlauben einzugeben, wie cgi verwendet werden, programmiert oder Dienstprogramme. Wenn Eingang Gültigkeitserklärung nicht auftritt, kann die Anwendung ausgenutzt werden, um willkürliche Programme durchzuführen, die das System beeinflussen können. Das folgende Beispiel zeigt die Unsicherheit des Verwendens von von system() mit nonvalidated Eingang. Nehmen Sie an, daß der Benutzer den Zeichenketteusername;/bin/rm Rf –/ lieferte, der dem variablen # zugewiesen wurde:

system("ecommerce_app # ");

Dieses übersetzt effektiv zu /bin/sh ecommerce_app username; /bin/rm –Rf/. annehmend, daß das Programm mit Privilegien läuft, das Programm, führt ein Oberteil durch, um die Ehandel Anwendung laufen zu lassen; schlagen Sie den Oberteil Semicolon, der der Befehl Separator in einem Oberteil ist; und dann laufen gelassener rm –Rf, der das gesamte Dateisystem löscht.

Meile Java Es Su Java

Java ist eine verhältnismäßig neue Erfindung in der Welt des verteilten Internet-Rechnens. Es holt zur Verwirklichung das Konzept des Plattform-unabhängigen Codes. Java arbeitet, indem es Code schreibt und ihn in ein spezielles Format kompiliert, das dann auf Java virtuelle Maschinen laufen gelassen wird. Die virtuelle Maschine (VM) ist Plattformbesondere, aber der Code, der Durchläufe auf ihm nicht ist. Java läßt Netzdatenbanksuchroutinen und ferninstallierte Systeme die komplizierteren und wechselwirkenderen Anwendungen laufen lassen. Das web browser macht eine Web site zugänglich und empfängt einen Java applet vom Bediener. Dieser applet dann läuft in das web browser und kann mit dem entstehenden web server verständigen. Als eingeführt, wandelte Java statische Webseiten in die dynamischen und flüssigen Anwendungen um. Seit den frühen Tagen hat der Gebrauch Java in viele unterschiedliche verteilte Verwendungsgebiete wie Netzführung, eingebettete Internet-Geräte und andere Dienstprogrammfunktionen erweitert.

Java ist ein feines Beispiel einer Sprache deren Entwickler Sicherheit in den frühen Designstadien betrachteten. Die Ausgangsversionen von Java hatten eine gut dokumentierte Sicherheit Architektur, genannt das sandbox, das den Java applet oder die Anwendung an zugänglich machenden System Betriebsmitteln verhinderte. Während Gebrauch Java anfing zu erweitern, entstand die Notwendigkeit für Zugang zu den System Betriebsmitteln außerhalb des sandbox. Die erste Version des Java Entwicklung Installationssatzes lieferte den Gebrauch der unterzeichneten applet. Das Modell beschreibt einen applet, der digital unterzeichnet wird, um seinen Schöpfer zu überprüfen. Wenn die digitale Unterzeichnung überprüft wird, wird der applet dann durch das lokale System vertraut, das den appletzugang zu anderen System Betriebsmitteln erlaubt. Diese digitale Unterzeichnungmethode bezieht eine angemessene Menge des Komplexes programmierend, um richtig zu arbeiten mit ein. Es ist auch wichtig, zu merken, daß dieses Sicherheit Modell eines digital unterzeichneten Java applet defekt ist. Jedermann kann einen applet unterzeichnen. Ein böswilliger applet kann vom Angreifer unterzeichnet werden und durch das web browser downloadet werden. Das web browser überprüft effektiv, daß der böswillige applet in der Tat vom Angreifer geschrieben wird, und dann führt es glücklich, zu durch, was Resultat in ihm programmiert wird.

Die gegenwärtige und zweite Wiederholung der Java Sicherheit Architektur ist viel leistungsfähiger und flexibel als früh Versionen. Dieses läßt Java viele Bereiche der Anwendung Entwicklung über seinen Fähigkeiten hinaus vorher eintragen. Die neue Java Sicherheit Architektur verwendet leicht definierbare Sicherheit Politik und Zugriffssteuerungmethoden, die einen applet oder eine Anwendung spezifische Betriebsmittel zu unterschiedlichen Grad zugänglich machen lassen. In Beziehung zu den Richtlinien stellte sich hier dar, analysierten Java Entwerfer die verschiedenen Interaktionen und die Verwundbarkeit, die mit verteilten Internet-Anwendungen vorhanden sind und kamen zu einem Modell, das hohe Sicherheit mit extremer Flexibilität versieht. Für komplette Unterlagen über Java und sein APIs, sehen Sie http://java.sun.com.

Das Oberteil Spiel und der UNIX

UNIX schält Form die Grundlage der Benutzerinteraktion mit einem UNIX System. Oberteile sind Befehl-Linie Interpreten, die irgendein Niveau der Automatisierung und der Programmierung in Form von Oberteilindexen stützen. Diese Indexe werden häufig benutzt, um System Aufgaben zu automatisieren, sich wiederholende Betriebe und laufen gelassene cgi Netzanwendungen durchzuführen. Wie mit Perl, sind Bereiche der möglichen Gefahr eingegebene Gültigkeitserklärung, Rennenbedingungen, Interaktion mit externen Akten und Programmen und die Organisation der Funktionalität.

In UNIX können privilegierte Betriebe von einem privilegierten Benutzer gelaufen werden, oder sie können auf Durchlauf als privilegierter Benutzer eingestellt werden. Es gibt subtile Unterschiede zwischen den zwei Methoden. Alle Akten in einem UNIX System, einschließlich Anwendungen, haben einen Satz Attribute, die Benutzer miteinschließen und Besitz gruppieren, und einen Satz Erlaubnismarkierungsfahnen. Kombiniert, erlauben sie, daß Akte Zugang ausschließlich gesteuert wird. Normale Anwendungen werden von einem Benutzer besessen und, abhängig von den Zugangsberechtigungen, konnten sie nur durch den Inhaber, durch eine Gruppe oder durch jedermann auf dem System laufen gelassen werden. Die Anwendungen übernehmen die Privilegien des Benutzers, der sie laufen läßt. Eine Anwendung, die Wurzelprivilegien erfordert, kann durch einen Nichtwurzel Benutzer, aber, an jenen Punkten laufen gelassen werden, in denen höhere Privilegien angefordert werden, sie ausfällt. Um dieses zu überwinden und normalen Benutzern zu erlauben bestimmte privilegierte Funktionen zugänglich zu machen, liefert UNIX die SetUID und SetGID Markierungsfahnen. Wenn sie ermöglicht werden, veranlassen sie die Anwendung, als der Inhaber oder die Gruppe für diese Anwendung zu laufen, die—sie die Benutzernummer (UID) der Anwendung auf einstellten, whomever sie besitzt.

Viel erfordern cgi und Systemprogramm Zugang zu den System Betriebsmitteln und sind SetUID Wurzel. Dieses trifft auf kompilierte Programme, wie C Programme und Indexe, einschließlich Perl und die UNIX Oberteile zu. Erfahrene UNIX Benutzer und Entwickler warnen häufig über die Gefahren der SetUID Oberteilindexe, die Wurzelprivilegien liefern. Wie früh besprochen, werden eingegebene Gültigkeitserklärung und Rennenzustände leicht ausgenutzt, wenn der Index nicht richtig geschützt wird. Wenn man einen Index als privilegierter Benutzer laufen läßt, gibt es keine einfachere Weise, die Schlüssel zum Schloß als ein schwacher Oberteilindex zu überreichen. Solche Indexe sind besonders gefährlich, wenn sie ohne Sicherheitsmaßnahmen programmiert werden, weil ein Oberteil durch Natur wechselwirkend ist. Benutzer-Versorgungsmaterial-Eingang und das Oberteil führt eine Funktion durch. Perl hat viele automatische Prüfungen und Balancen, die sichereren SetUID Verbrauch erlauben.

Internet-Geräte

Internet-Geräte sind jene Systeme und Vorrichtungen deren gesamter Zweck Internet-Rechnen ist. Alle Designrichtlinien, Programmiersprachebetrachtungen, Verwundbarkeit und funktionierenden Paradigmen sind direkt zu den Internet-Geräten relevant. Internet-Geräte verwenden häufig allgemeine Betriebssysteme, Anwendungen und Methoden, um ihre Ziele zu erreichen. Wenn die Anwendung in der Entwicklung diesem Weg folgt, Bezahlung besondere Aufmerksamkeit zu allen die Informationen hier dargestellt. Einige Internet-Geräte werden vom Kratzer entwickelt und enthalten nur eben entwickelte Designs und Technologien. Das Festsetzen der Sicherheit Gefahr für diese Systeme erfordert Extragewissenhaftigkeit. Es ist besonders wichtig, Sicherheit in einen Designprozeß beim Abfahren zu integrieren vom Kratzer.

dieses ist ein Artikel, der von Tamas Querolin hinzugefügt wird


Verzicht: Unsere Web site ist nicht zu der Information verantwortlich, die durch diesen Artikel enthalten wird. Dieser Artikel reflektiert keineswegs die Ansichten, die Meinungen, die Gedanken oder den Glauben des Artikelverzeichnisstabes.

Übersetzung Nachricht: Der Artikel "sichere Kodierung-Praxis" wurde mit einem automatisierten Übersetzungsdienst übersetzt. Wir entschuldigen herzlichst uns für alle mögliche Übersetzung Störungen, die auftraten. Danke für das Verstehen.

Online: 417 users browsing the articles directory