Sicherheit mit praktischen Beispielen

Radhad

Erfahrenes Mitglied
Hallo zusammen,

ich bin vorhin auf einem heise.de Artikel auf die Top 20 Hacker-Ziele gestoßen. Bei dem Punkt "Web Applications" steht ganz oben PHP. Hier sind die angemahnten "Lücken" in PHP: http://www.sans.org/top20/2005/#c1

Ich fänd es nicht schlecht, wenn man zu den genannten Problemen vielleicht eine Situationsbeschreibung machen würde und dann dazu die entsprechende Lösung, denn viele machen sich ja keine Gedanken darum, ihre Website auch vor Missbrauch und Attacken zu schützen.


Gruß Radhad
 
Sicherheit ist eher ein Grundgedanke oder eine Ahnung, die man haben muss, als eine feste Liste mit Punkten. Es geht darum, zu verstehen, was ein Skript macht und an welchen Stellen es angreifbar oder nur schwach geschützt ist. Dabei muss man sich mit viel Kreativität und Phantasie vorstellen, was passieren könnte, wenn etwa statt des erwarteten X ein Y verarbeitet wird.

Nehmen wir mal das Beispiel SQL-Injektionen. Eine Abfrage mit Benutzerdaten zu füllen, ist recht einfach: einfach in der Abfragedefinition die Variable einsetzen und fertig. Bei einfachen alphanumerischen Daten ist das auch kein Ding, doch was passiert, wenn nun etwa Anführungszeichen in den Daten enthalten sind? Was passiert dann mit der definierten Abfrage? Ist sie dann immer noch syntaktisch und semantisch korrekt? Oder wird die Zeichenkette vorzeitig abgeschlossen und der Teil nach dem Anführungszeichen wird von MySQL nicht mehr als Zeichenkette gewertet? Falls ja, wie kann ich das unterbinden? Soll ich die entsprechenden Zeichen einfach verbieten oder gibt es eine Möglichkeit sie einfach nur zu entschärfen? Gibt es vielleicht noch andere Zeichen, die missbraucht werden könnten? Wie …

Solche Fragen lassen sich gewiss noch weiterführen. Doch sie führen auf einen Punkt, nämlich dass der Entwickler bei seiner Arbeit immer wachsam und aufmerksam sein muss und die Schwachstellen erahnen kann.
 
@Gumbo: Das ist ja das, was man im Regelfalle auch tut. Trotz allem könnte man doch anhand von Beispielen zeigen, warum der Code XY angreifbar ist und dann aufzeigen, wie man es richtig macht. So hätten einige User hier im Forum eher die Möglichekit, ihre Website abzusichern.

Ich habe selber auch nicht alles abgedichtet. ich habe bisher lediglich bei den SQL-Strings die Variablen in mysql_real_escape_string() gesetzt, bin aber nicht sicher, ob das Richtig ist. Vielleicht muss ja uch der ganze SQL-String in mysql_real_escape_string() gepackt werden? Darauf hab ich z.B. nie eine Antwort gefunden. Und es gibt ja noch genug andere Sachen - daher wär ne Übersicht mit den Beispielen nicht schlecht.
 
Das ist ja das, was man im Regelfalle auch tut. Trotz allem könnte man doch anhand von Beispielen zeigen, warum der Code XY angreifbar ist und dann aufzeigen, wie man es richtig macht. So hätten einige User hier im Forum eher die Möglichekit, ihre Website abzusichern.
Damit würde wahrscheinlich auch nur für die genannten Beispiele geholfen sein. Denn es ist nicht wichtig eine Problemlösung präsentiert zu bekommen, sondern ein allgemeines Gespühr dafür zu bekommen, wie Sicherheitslücken entdeckt und dann auch gestopft werden können.

Stell dir mal vor, da gibt es eine massive Sicherheitslücke in einem Programm. Der Entwickler muss nun eine Lösung für dieses Problem finden und vielleicht noch weitere Sicherheitslücken finden, die dadruch erst eröffnet werden. Der Programmierer bekommt dann die Ergebnisse dieser Analyse und setzt das Ganze um.
Was glaubst du nun, wer mehr verdient? Der Programmierer (der Praktiker), der die fertige Lösung einfach nur umsetzt oder der Entwickler (der Theoretiker), der sich über die Lösung des Problems den Kopf zerbrochen hat?


ich habe bisher lediglich bei den SQL-Strings die Variablen in mysql_real_escape_string() gesetzt, bin aber nicht sicher, ob das Richtig ist. Vielleicht muss ja uch der ganze SQL-String in mysql_real_escape_string() gepackt werden?
Diese Frage sollte dir die Referenzseite mysql_real_escape_string()-Funktion beantworten können. Denn diese enthält neben einem von dir geforderten Beispiel auch eine detaillierte Beschreibung der Funktion. Die Kurzbeschreibung lautet etwa:
Maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung
Die mysql_real_escape_string()-Funktion ist also nicht auf die gesamte SQL-Anweisung sondern nur für Teile (genauer gesagt für Zeichenketten) innerhalb einer SQL-Anweisung eingesetzt werden.
 
Zurück