Neben den hier vorgestellten großen Lücken gibt es ein paar weitere Fehler, die man durch ein wenig Nachdenken eigentlich vermeiden könnte. Aber manchmal muss es eben schnell gehen oder man freut sich so sehr über eine Lösung, dass man über die Nachteile gar nicht nachdenkt.
Clientseitiger Passwortschutz
Mit JavaScript lässt sich ein Eingabefenster erzeugen (window.prompt()) und es lassen sich auch Formulardaten auslesen. Dementsprechend sind schon einige Webdesigner auf die Idee gekommen, per JavaScript auch eine Passwortüberprüfung durchzuführen. Das ist natürlich fatal, denn das korrekte Passwort selbst muss ja auch immer mit im JavaScript-Code stehen. Zwar benötigt der Nutzer ein wenig JavaScript-Kenntnisse, aber das ist für einen böswilligen Angreifer keinerlei Hürde.
Zugriffskontrolle auf URL-Basis
Ein häufiger Fehler besteht darin, zu denken, dass eine URL, nur weil sie nicht bekannt ist, nicht erreichbar ist. Könnte Ihnen nicht passieren, denken Sie? Ein simples Beispiel: Nehmen wir an, Sie haben einen Shop entwickelt und jeder Nutzer kann seinen Warenkorb bearbeiten. Die URL für den Nutzer ist: http://www.shop.xy/bearbeiten.php?wid=51
Denken Sie jetzt einmal böswillig, was würden Sie als Erstes testen? Genau, Sie ändern einfach mal den Wert des URL-Parameters: http://www.shop.xy/bearbeiten.php?wid=50
Gibt es auf dieser Seite keine vollständige Sicherheitsüberprüfung, ob Sie überhaupt die Berechtigung haben, darauf zuzugreifen, dann sind Sie direkt im Warenkorb von einem anderen Kunden.
Diese Lücke ist auch sehr gefährlich, wenn Sie ein System haben, das eigentlich mit einem Login und Session-Management geschützt ist. Gerade dann wird der Programmierer bei den Berechtigungen gern schlampig. Die Autoren hatten den Praxisfall bei einem Anmeldesystem für eine Konferenz entdeckt, bei dem mit diesem simplen Trick jeder Referent die Vorschläge der anderen Referenten ändern konnte. Trotz mehrmaliger Hinweise wurde der Fehler erst ein Jahr (und zwei Konferenzen) später korrigiert.
Wenn Sie nicht Webseiten, sondern Dateien, z.B. PDFs, schützen möchten, geht das direkt nur über die HTTP-Authentifizierung. Sollten Sie dagegen mit einem Login und dem Session-Management der serverseitigen Technologie arbeiten, gibt es eine Behelfsalternative: Sie verstecken die zu schützenden Dateien in einem Pfad mit langem und kryptischem Namen, der nicht "erraten" werden kann. Dann schreiben Sie in Ihrem normalen Code eine Skriptdatei, die diese Datei einliest und ausgibt. Diese normale Skriptdatei lässt sich natürlich über das normale Session-Management schützen.
Lesen Sie auf der nächsten Seite:
Lesen Sie in diesem Beitrag