tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
703
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Zitat Zitat von tombe Beitrag anzeigen
    Du arbeitest immer noch mit der zusätzlichen Variable $token. Diese ist meiner Meinung nach überflüssig weil du doch den Token in der Variablen $_SESSION["token"] hast.

    Die Prüfung mit dem IF-Block dürfte (so wie ich es verstehe) auch falsch sein. Du prüfst auf den Wert $_POST["token"] aber du solltest prüfen ob der Submit-Button angeklickt wurde -> $_POST["submit"].

    Wobei ich irgendwo im Hinterkopf eine Erinnerung daran habe das es manchmal Probleme gibt wenn der Submit-Button den Namen "submit" hat!?

    Wenn ich da jetzt was falsche verstehe, dann erkläre bitte nochmal was jetzt klappt und was nicht.
    Die zusätzliche Variable ist in dem Fall trivial, den ob er nun das Input-Feld direkt durch die Session-Variable befüllt oder mit einer nirmalen Variablen is "gehupft wie gehechtelt..."

    Die Prüfung ist in Ordnung so, da er ja in seinem Formular den Token explizit in einem Hidden-Filed übergibt. Also wird dieser auch per POST übergeben. Klar wäre es besser auf ein bestimmtes Element im Formular zu prüfen, aber dieses ist so gesehen auch egal, solange es ein eindeutiges Feld ist und nirgendwo anders auch übergeben wird.

    Mit Problemen duch den Namen des Submit-Button hab ich noch nicht gehört, auch nicht selber feststellen können.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  2. #17
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Die zusätzliche Variable ist in dem Fall trivial, den ob er nun das Input-Feld direkt durch die Session-Variable befüllt oder mit einer nirmalen Variablen is "gehupft wie gehechtelt..."
    Von der Funktion her ist es natürlich egal ob man eine zusätzliche Variable einbaut oder nicht.

    Generell kann man sich aber leichter verschreiben oder Variablen vertauschen je mehr es davon gibt. Deshalb mein "Einwand".
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #18
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ja, die Variable $token ist nicht wirklich notwendig das stimmt, man kann genauso gut $_SESSION["token"]; direkt ins Input Feld setzen.

    Aber was mich immer noch stört ist, das wenn ich 2 php Seiten habe in der einen das Formular mit Token Generierung in der anderen Seite die Verarbeitung von Token und Formular, dann verhindert das ein erneutes Senden des Formulars weil der Token beim erneuten Senden nichtmehr übereinstimmt.

    Wenn ich das aber hier bei meiner Index.php mit Includierter Seite mache dann funktioniert ein erneutes Senden ohne Probleme weil das Formular immer mitübermittelt (weils ja im Prinzip ein und diesselbe Seite ist für Generierung des Tokens und Verarbeitung).

    Ist das Sicherheitstechnisch gesehen schlimm oder kann ich so auch CSRF / XSRF Attacken erschweren ?
     

  4. #19
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Dann mache doch eine separate Datei die "nur" die Token-Funktion enthält.

    Diese Datei/Funktion includierst du dann überall da wo die sie brauchst.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  5. #20
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Hmm also ich hab gestern mal die Token Funktion per Include und Include_once includiert, am eigentlichen Problem ändert sich aber leider nichts.

    Das Formular ist über dem Seiteninclude im Quellcode. Includiere ich die Tokenfunktion über dem Formular ändert sich nichts, includiere ich darunter geht die Übermittlung nicht weil noch kein Token erzeugt ist.

    Ich weiß jetzt nicht wie du das meinst mit dem Include. @ Tombe
     

  6. #21
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ich habs jetzt ganz anders gemacht, hatte keine Lust mehr mit den Tokens hats nicht funktioniert.

    Die Suche per GET

    Code :
    1
    2
    3
    4
    5
    6
    
    <form action="index.php" method="get">
        <div class="searchbar">
          <input type="text" name="search" class="searchfield input" id="searchfield" maxlength="200" alt="Suche... " value="Suche... " onclick="document.getElementById('searchfield').value=''; this.style.color = '#000';" />
                 <input type="submit" id="submit" class="search-button" value="" />
        </div>
      </form>

    Die Verarbeitung direkt in der Index.php

    PHP-Code:
     if(isset($_GET["search"]) && !empty($_GET["search"])) {
            
        
    $search preg_replace"/[^a-z0-9]/i"""$_GET["search"] );

    $sql "SELECT * FROM ".$sqltab27." WHERE name LIKE '%".$db->escape($search)."%'";

    .
    .
    .
     
    usw 
    Somit funktioniert das wunderbar.


    Jetzt eine letzte Frage dazu, ist das so von der Sicherheit her Ok ?
     

  7. #22
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Also ich hab ein bisschen gegoogelt und der Code ist so sicher.

    Wer eine solche Suchfunktion also nachbauen will und auch das Formular und die Verarbeitung auf derselben Seite liegen hat hiermit einen Anhaltspunkt.

    Code :
    1
    2
    3
    4
    
    <form action="index.php" method="get">
              <input type="text" name="search" id="searchfield" maxlength="200" alt="Suche... " value="Suche... "  />
                 <input type="submit" id="submit" value="" />   
      </form>

    PHP-Code:
    if(isset($_GET["search"]) && !empty($_GET["search"])) {
        
        
    // Ganz wichtig search muss gefiltert werden !!
        
    $search preg_replace"/[^a-z0-9]/i"""$_GET["search"] );

    // In der Abfrage dann gegen SQL Injection sichern mit $db->escape ...
    $sql "SELECT * FROM ".$sqltab27." WHERE name LIKE '%".$db->escape($search)."%'"
    Das mit den Tokens entfällt in dem Fall weil die Suche keine kritische Anwendung ist.

    Anders wäre es wenn das ganze ein Login wäre oder irgendwas womit die Datenbank direkt beeinflusst wird z.b. INSERT, UPDATE, DELETE FROM ...

    Viel Spaß damit und Vielen Dank an die vielen Hilfestellungen von Tombe , Maniac und Saftmeister
     

Ähnliche Themen

  1. Formular Token Problem
    Von starfoxfs im Forum PHP
    Antworten: 5
    Letzter Beitrag: 20.09.09, 12:33
  2. session token
    Von inspector_71 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 28.10.07, 11:01
  3. Antworten: 4
    Letzter Beitrag: 03.10.07, 02:37
  4. token
    Von benni miles im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 01.04.07, 21:25
  5. ungültiger Token
    Von 123arne im Forum .NET Windows Forms
    Antworten: 3
    Letzter Beitrag: 12.10.05, 13:58