Kleine Fragen zur Sicherheit

  • Themenstarter Themenstarter SilverVegeto
  • Beginndatum Beginndatum
S

SilverVegeto

Guten Morgen,

ich hätte noch ein paar kleine Fragen bezüglich der Sicherheit.

1. Wie sicher sind Session? Gibt es Möglichkeiten diese von außerhalb zu ändern?

Meine Methode (natürlich nur ein Ausschnitt):
Beim Einloggen bekommt der User eine Zufalls-ID zugewiesen mit min. 30 Zeichen, die in der Datenbank mit noch anderen Daten zum Abgleich gespeichert werden. Die Session-ID trägt der User in seiner Sitzung mit Hilfe einer Session mit und wird ständig mit der Datenbank verglichen.
Ist dies so wirklich eine gute Methode?

2. Erwartete Aktionen
Wenn ich zb ein Formular mit POST-Funktion habe weiß ich das der User um das Formular zu schreiben auf dieser Seite gewesen sein muss. Gibt es Möglichkeiten das zu prüfen, denn sonst könnten die User den Quellcode meines Formulars kopieren und in seiner Website einbaue und Blödsinn anstellen.
Natürlich werden die Angaben der einzelnen INPUT-Felder geprüft bevor diese verarbeitet werden.

3. Habt ihr noch andere Tipps für mich aus der Praxis? Damit meine ich jetzt keine SQL Injektion oder Cross-site Scripting Gefahren. Sondern andere die vielleicht nicht so bekannt sind.

Danke.
 
Zu Punkt 1 fällt mir ein das die Session bestenfalls geklaut werden kann (Da die Daten bis auf die SID auf den Server gespeichert sind), da kannst du aber etwas dagegen machen entweder du setzt ein cookie (was nicht sehr beliebt ist und nicht von jeden akzeptiert wird) oder du überprüfst bei jeder Abfrage soviele Daten des clienten wie möglich bsp.
PHP:
<?php
$browser = $_SERVER["HTTP_USER_AGENT"];
$ip = $_SERVER["REMOTE_ADDR"];
if(isset($_SESSION['user_id']))
{
    $unteaetig = $_SESSION["user_letzteaktivitaet"] + 60 * 45;
    IF($_SESSION["user_browser"] != $browser)
    {
        // stirb
        session_unset (); 
        session_destroy ();
        echo '<meta http-equiv="refresh" content="2">';
    }
    IF($_SESSION["user_ip"] != $ip)
    {
        // stirb
        session_unset (); 
        session_destroy ();
        echo '<meta http-equiv="refresh" content="2">';
    }
    IF($unteaetig < time())
    {
        // stirb
        session_unset (); 
        session_destroy ();
        echo '<meta http-equiv="refresh" content="2">';
    }
}
?>

mfg Spikaner
 
zu 2.
Du könntest beim Formular z.B. einen Wert setzen, d.h. bei Besuch der Seite könnte man z.B. soetwas reinschreiben:

PHP:
$_SESSION["Form"] = "check";

Wenn man jetzt in die Verarbeitung geht, prüft man ob check gesetzt wurde und erst dann gehts weiter.
Man könnte aber auch, wenn man eingeloggt sein muss um das Formular zu sehn, dem User in der Datenbank ein Flag setzen, d.h. wenn der User das Formular anschaut, dann wird der Wert für Form in der Datenbank auf 1, check oder wie auch immer gesetzt.
 
Zu 3 noch nee Methode um Roboter "auszusperren"
Bei den Formular
HTML:
<input type="hidden" name="checksend" value="ok" />
und dann ein js schnipsel

document.fightus.checksend.value = "done";

Und das Script erwartet bei Prüfung $_POST['checksend'] == "done" und die Roboter schicken "ok" ;)

mfg Spikaner
 
Wie sicher sind Session? Gibt es Möglichkeiten diese von außerhalb zu ändern?
Die Sitzungsdaten selber sind vor direkter Manipulation von außen geschützt, da auf sie nur der Server zugreifen kann.
Dagegen ist die Sitzungs-ID quasi-öffentlich, da der Client sich mit ihr bei jeder Anfrage identifiziert. Hier sind ungewollte Manipulationen (im Sinne des beliebigen Austauschs der Sitzungs-ID) unvermeidbar, jedoch erkennbar. Dazu wird die Sitzung mit zusätzlichen, charakteristischen Informationen über den Client verbunden. Welche das sind, darüber lässt sich aber streiten.


Wenn ich zb ein Formular mit POST-Funktion habe weiß ich das der User um das Formular zu schreiben auf dieser Seite gewesen sein muss. Gibt es Möglichkeiten das zu prüfen, denn sonst könnten die User den Quellcode meines Formulars kopieren und in seiner Website einbaue und Blödsinn anstellen.
[thread=283292]Sicherheitsfokus: Formulare vor Manipulationen schützen[/thread]
 
Vielen Dank für die ganzen Infos, sind sehr hilfreich.
Jetzt kommt mir noch eine Frage bezüglich SSL-Seiten. Diese bieten ja einen "verschlüsselten Tunnel" und soweit auch alles klar, aber wie schaffen Angreifer es überhaupt Daten von Website zu Server abzufangen?
 
Zurück