was ist wo und wann sicher _GET, _POST, _SESSION, _COOKIE

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • was ist wo und wann sicher _GET, _POST, _SESSION, _COOKIE

    hab zur zeit ein projekt am lafen und wie es der zufall so will hab ich im internet gelesen das man variable die per _GET, _POST, _SESSION, _COOKIE verändern kann.
    was ist dan demnach am sichersten?

    in meiner seite werden _GET, _POST und _SESSION verwendet.

    wie kann ich diese variablen sicher machen und überprüfen.

    z.b index.php?id=1 wird ja per _GET übergeben was ist wenn man in der url stadt 1 eine 2 macht
    kann ich dies vordefinieren und überprüfen erst dan ausgeben.

    z.b in einem formular werden grundsätzlich ber _POST übergeben. gibt es dazu eine javascript funktion die zum beispiel die hässlich grauen buttons durch einen normalen link ersetzt und dessen daten nicht durch ein <form> zu übergeben?

    zu _SESSION wo wird diese gespeichert und definiert bzw. ist diese sicher und wie verhalten sich diese bei veränderungen?

    zu _GOOKIES weis ich die werden clientseitig gespeichert deshalb will ich diese heher vermeiden

    mir ist klarr das manche _GET nicht ausbleiben werden wegen verschiedenen mitgliederlisten und das menü selbst darauf aufgebaut wurde. es wurde durchaus auch erwähnt die dateinamen in einem array() oder mysql zu definieren. ist da was wahres dran?

    freu mich schauf eure antwort und danke schon im vorraus

    mfg. wessei

  • #2
    z.b index.php?id=1 wird ja per _GET übergeben was ist wenn man in der url stadt 1 eine 2 macht
    Das kannst du nicht verhindern.
    Bei Post ebenso. JS hilft da gar nicht.

    Die Sessiondaten liegen auf dem Server recht sicher, es sei denn der Server Admin ist ein Verbrecher, oder Idiot.
    Die SessionID kommt allerdings wieder vom Browser und ist damit, wie alles was vom Browser kommt, fälschbar.
    Wir werden alle sterben

    Kommentar


    • #3
      Nichts was vom Client kommt ist sicher

      Die Überschrifft dieser Antwort sollte fett, unterstrichen und GROSS geschrieben sein.
      Wenn du dies nie vergisst hast du die halbe Miete.

      Eine Überprüfung per JavaScript ist NIE sicher. Dies kannst du höchstens einsetzen um dem Besucher schnell und ohne Absenden des Formulars Fehler anzuzeigen. Um deine Anwendung sicher zu machen MUSST du immer Serverseitig validieren.

      Wenn die z.B. eine ID übergibst, sei es per GET oder POST oder sie aus dem COOCKIE holst kannst du ganz simpel mit is_numeric überprüfen ob es sich um eine Zahl handelt.
      Wenn du nur ganz bestimmte Werte erwartest, dann musst du natürlich auf diese prüfen. Z.B. grösser,kleiner als if ($_GET['x] >= 1 && $_GET['x] <= 10) {...}
      Oder du gibst eine Reihe Werte in ein Array und prüfst ob der übergebene darin vorkommt. if ( in_array($_GET['x], array(1,2,5,8)) ) {...}

      Wenn du die ID an die Db übergen willst, z.B. in einem SELECT, dann kannst du sei ganz einfach nach int casten, also in eine Ganzzahl umwandeln (int)$_GET['x].

      Bei Strings wird es wieder komplizierter. Dieser könnte Schadcode enthalten.
      Mach dich hierbei vor allem SQL-Injection schlau. Hier mal ein erster Ansatz: https://de.wikipedia.org/wiki/SQL-Injection. Hierbei ist das Schalgwort mysql_real_escape_string() wichtig. Les dich da unbedingt rein.
      Dabei geht es darum, dass Schadcode deine Datenbank zerstören oder was meist noch schlimmer ist, sensible Daten auslesen und an den Angreifer zurückgeben könnte.

      Cross-Site-Scripting (XSS) wird oft unterschätzt, ist aber mindestens genauso ernst zu nehmen - siehe hier https://de.wikipedia.org/wiki/Cross-Site-Scripting.
      Viele Seiten sind sicher vor SQL-Injections. Durch XSS sind sie aber wieder anfällig durch Identitätsdiebstahl. Wichtig hierbei: Wenn du etwas über die besagten GET, POST, etc. entgegen nimmst, dann darft du dies nicht ungefiltert wieder zurück auf die Seite lassen. Bsp. du hast ein Form und wenn der Benutzer falsche Weingaben gemacht hat und die ihn wieder aufs Formular zurückschickst und das Formular mit seine bereits getätigten Angaben vorausfüllst. Dies könnte ein Angreifer benutzen um einer Person z.B. einen Link per Mail zu schicken. Darin könnte dann evtl. ein falsches Formular angezeigt werden welches zur Eingabe von Passwort auffordert und dieses statt an deinen Server, an den des Angreifers sendet.

      Alles in allem denke ich, dass du dich noch gründlich damit auseinandersetzen solltest.

      Kommentar

      Lädt...
      X