Sicherheit des Skripts

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

  • #31
    Leer mal deinen Browsercache.
    Leg den Umlautdatensatz nochmal neu an.
    Schmeiss die Windowsbüchse weg
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #32
      Problem gelöst. Es funktioniert. Ich Hornochse habe vor lauter hin und her mit den Umlauten vergessen im query mit $_POST['name'] zu arbeiten. Somit konnte er nie was finden.

      Tschuldigung an alle die sich das Gehirn zermatert haben warum es nicht funktioniert. Das passiert mir, hoffentlich, auch nicht mehr.


      Nochmals vielen vielen Dank an alle die mir geholfen haben ! ! !
      Gruß

      Michael

      Kommentar


      • #33
        Schmeiss die Windowsbüchse weg
        OffTopic:

        Aha, ein fundamentalistischer Windows-Hasser


        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #34
          OffTopic:

          Quatsch Wie kommst du denn darauf?

          Ich habe nur mit Windows als Webserver so meine negativen Erfahrungen gemacht.

          Als Domänen- oder CRM Server is die Software zu gebrauchen

          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #35
            Mal noch ne andere Frage. Ich versuche meine Query auf PDO umzustellen um vor Injections mehr oder weniger sicher zu sein.

            Das ist mal ein query zum abfragen ob ein User zu einem bestimmten Datum schon einen Eintrag gemacht hat.

            PHP-Code:
            $query $dbh->prepare("SELECT datum FROM kegeln where datum ='" $_POST['datum'] . "' 
            and name='" 
            $_SESSION['name'] . "'");
            $query->execute(); 
            Mein Problem ist nun, wie finde ich heraus, ob der query einen Satz gefunden hat oder nicht?

            So sah das vorher aus:

            PHP-Code:
             //Datenbankabfrage ob Termin bereits eingetragen
             
            $query "SELECT datum FROM kegeln WHERE
             (datum = '" 
            mysql_real_escape_string($_POST['datum']) . "') AND
             (name = '" 
            mysql_real_escape_string($_SESSION['name']) . "')";  
             
            $result mysql_query($query);
             if (!
            $result
             {
             die(
            'Ungültige Abfrage: ' mysql_error());
             }
              
            $zeile mysql_num_rows($result); 
            Auf $zeile wurde dann entschieden wie es weitergeht.


            In wie weit macht es denn Sinn auf PDO umzustellen oder kann man auch getrost bei den herkömmlichen querys bleiben?
            Zuletzt geändert von fritzje610; 20.03.2008, 12:58.
            Gruß

            Michael

            Kommentar


            • #36
              Mein Problem ist nun, wie finde ich heraus, ob der query einen Satz gefunden hat oder nicht?
              http://docs.php.net/manual/de/functi...t-rowCount.php
              In wie weit macht es denn Sinn auf PDO umzustellen oder kann man auch getrost bei den herkömmlichen querys bleiben?
              Am besten machst du das wie folgt (nur dann erreichst du auch wirklich "mehr Sicherheit" (dass, was du da im Moment machst ist eher ein viel größere Lücke):
              PHP-Code:
              $query $dbh->prepare("SELECT datum FROM kegeln where datum=? and name=?");
              $query->execute(array($_POST['datum'],$_SESSION['name'])); 
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #37
                Muss ich bzw. sollte man die Variablen, die man an den query übergibt, nochmal mit mysql_real_escape_string behandeln oder ist das dann doppelt gemoppelt und es reicht einfach die Eingaben an den query zu geben ?
                Gruß

                Michael

                Kommentar


                • #38
                  Irgendwie tue ich mir mit dem PDO noch recht schwer.
                  Wie kann ich dieser Abfrage

                  PHP-Code:
                  $sql "SELECT datum FROM kegeln where datum=? and name=?";
                  if (
                  $res $dbh->query($sql))
                   {

                      
                  # Check the number of rows that match the SELECT statement
                    
                  if ($res->fetchColumn() == 0)
                     {
                   
                  #hier der Teil der ausgeführt wird wenn keine Zeile gefunden
                  }
                  else
                  {
                  # hier der Code wenn Zeile gefunden


                  die Parameter

                  PHP-Code:
                  if ($stmt->execute(array($_POST['datum'], $_SESSION['name']))) 
                  mitgeben, die anstelle der ? gesetzt werden sollen???

                  Das muss ja irgendwie in der 2. Zeile bei dem if mit eingebunden werden. Nur eben wie ?
                  Gruß

                  Michael

                  Kommentar


                  • #39
                    Kann mir da keiner bei diesem Problrm weiterhelfen ???
                    Gruß

                    Michael

                    Kommentar


                    • #40
                      Wie Kropff heute schon so schön sagte: Du weißt welcher Tag heute ist, also nicht drängeln!

                      Die query-Methode kann so direkt keine Parameter annehmen. Die execute-Methode des PDOStatements kann das aber. Du kannst deine Abfrage also folgendermaßen abändern:
                      PHP-Code:
                      if ($res $dbh->prepare($sql)->execute($params)) 

                      Kommentar


                      • #41
                        Ich gebs ja zu, ab und an geht dann die Ungeduld mit mir durch.
                        Ich probier's mal aus und dann melde ich mich wieder.

                        Vielen Dank euch allen und frohe Ostern. (an denen es auch mal langsamer voran gehen darf)
                        Gruß

                        Michael

                        Kommentar


                        • #42
                          Hallo,

                          ich habe mich mal an dem query versucht, komme aber auf keinen grünen Zweig. Hier das komplette Gebilde:

                          PHP-Code:

                           $sql 
                          "SELECT datum FROM kegeln where datum=? and name=?";
                           if (
                          $res $dbh->query($sql,(array($_POST['datum'], $_SESSION['name']))))
                           {
                            if (
                          $res->fetchColumn() == 0)
                            {
                             
                          $edatum date("d.m.Y H:i:s"); //Eintragedatum ermitteln
                             
                          if((count($error) == 0) AND ($_POST['datum'] != "") AND ($_POST['status'] != ""))
                             {
                              
                          //Datum in Datenbankdatum drehen
                              
                          $datum $_POST['datum'];
                              
                          $jahr substr($datum, -4);
                              
                          $monat substr($datum32);
                              
                          $tag substr($datum02); 
                              
                          $datum $jahr "-" $monat "-" $tag;
                              
                          $query $dbh->prepare("SET CHARACTER SET utf8");
                              
                          $query->execute();
                              
                          $query $dbh->prepare("INSERT INTO kegeln (datum, name, status, edatum) 
                                                      VALUES (:datum, :name, :status, :edatum)"
                          );
                              
                          $query->bindParam(':datum'$datum);
                              
                          $query->bindParam(':name'$_SESSION['name']);
                              
                          $query->bindParam(':status'$_POST['status']);
                              
                          $query->bindParam(':edatum'$edatum);
                              
                          $query->execute();
                              echo 
                          " Termin eingetragen.";
                             }
                             else
                             {
                              echo 
                          "<p><fehler>Termin wurde bereits eingetragen ! ! !</fehler>"
                             }
                            } 
                           } 
                          In der Doku steht was, wenn ich das richtig interpretiere, das man dem query wohl auch parameter mitgeben kann. Das habe ich da mal probiert. Wie gesagt, der Erfolg ist leider recht dürftig.

                          Mit prepare und execute komme ich auch nicht weiter, da der execute nur true bei Erfolg bzw. false im Fehlerfall zurückgibt. Das sieht dann so aus
                          PHP-Code:
                           if ($res $dbh->prepare($sql)->execute(array($_POST['datum'], $_SESSION['name']))) 
                          Da kann ich dann nicht auswerten, ob er ne Zeile gefunden hat oder nicht. Genau das brauche ich aber im keine doppelten Einträge für ein Datum zu erhalten. Ausserdem gibts dann ne Fehlermeldung
                          Code:
                          Fatal error: Call to a member function fetchColumn() on a non-object

                          Wie muss dieses if den aussehnen, damit das wie gewollt funktioniert???
                          Gruß

                          Michael

                          Kommentar

                          Lädt...
                          X