Einzelnen Beitrag anzeigen

Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#16

Re: [PHP] Session-Management - Sicherheit

  Alt 19. Jul 2009, 22:33
Zitat von Matze:
@Julius: Du solltest noch mysqlrealescapestring() o.ä. nutzen. Es kann sonst ganz böse ausgehen, wenn der Benutzername im Session-Array ein Hochkomma enthält. Wenn ich das richtig sehe sind so problemlos SQL-Injections möglich.

Wenn du die Strings vorm Zuweisen des Session-Aeeays escapest, dann ist das natürlich in Ordnung. Doch das ist nicht ersichtlich. Daher der Hinweis.
Wetten der Server hatten magic_quotes aktiviert?
Ist das der Fall, so würde ein (weiteres) esacpen nämlich die Daten zerstören.

Edit:// ... ... Warum hab' ich in letzter Zeit immer so'n Pech mit solchen Kommentaren? Und warum haben in letzter Zeit immer mehr Server die magic_quotes deaktiviert? Noch sind die nämlich standard-mäßig bei PHP aktiviert.

Naja, trag' ich eben was anderes sinnvolles zum Thema bei. *g* Das ganze Problem wäre keins (oder ein geringeres), wenn ihr Code von Ausgabe trennen würdet. Dafür bietet sich zum Beispiel ein Template-System wie Smarty an. Außerdem bietet sich für die Programmierung von Webseiten mit PHP auch die Verwendung der MVC-Architektur an. Tut man dies und ruft ein Benutzer eine Seite auf, so wird für den Content eine Methode einer Klasse aufgerufen. Zum Beispiel so eine:

Code:
<?php

class MyController extends Controller {
    public function myAction()
    {
        // Hier Code einfügen
    }
}
An dieser Stelle wäre es ein leichtes, ein geeignetes Sicherheits-System zu implementieren. Dabei kommt es darauf an, wie komplex dieses sein soll. Wir benutzen eine Art RBAC-System, welches mit Rollen arbeitet. Möchten wir den Zugriff auf eine Ressource prüfen, so läuft das wie folgt:

Code:
// Dieser Code steht in der obigen Methode
if (!$this->has_role('view memberlist'))
    return 403;
Mittels des return-Codes kann so auf ganz einfache Art und Weise sogar der HTTP-Status festgelegt werden. Wenn man alles drumherum entsprechend gestaltet, so wäre es dann möglich durch diese einfachen Zeilen einen 403-Error auszugeben, was zugleich auch noch SEO-konform ist. Ähnliches kann man mit 404 bewerkstelligen:

Code:
try {
    $user = new User(strval($_GET['user']));
} except (UserNotFoundException) {
    return 404;
}
Die HTTP-Status-Codes für "Bad Request" und "Internal Server Error" haben ähnlichen Anreiz diese Funktion zu verwenden.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat