sql injection

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sql injection

    Hallo,

    bei meinem 'system' werden die variablen über die url weitergegeben, das format sieht z.b. folgender maßen aus, seite.php?query=var1,var2,varX

    sämtliche var die von usern kommen (input felder,textareas) sind im array $foobar gespeichert.

    Meine Frage lautet jetzt, ob es nicht theoretisch ausreichen würde, wenn man die arrays $_GET und $_POST und $foobar checkt am anfang ob diese
    lediglich die zeichen A-Z bzw. 0-9 (+",") erhalten, dann ist alles okund eine sql injection kann eigtl nicht mehr passieren -
    ist dies nicht der fall leitet man auf eine seite um oder ähnliches.

    Sehe ich das richtig - oder hat meine logik ein oder mehrere Fehler?

    gruß Boris
    Zuletzt geändert von bpieper; 19.11.2004, 12:50.

  • #2
    das Thema ist alt, such mal im Forum

    Kommentar


    • #3
      Re: sql injection

      Original geschrieben von bpieper
      Meine Frage lautet jetzt, ob es nicht theoretisch ausreichen würde, wenn man die arrays $_GET und $_POST und $foobar checkt am anfang ob diese
      lediglich die zeichen A-Z bzw. 0-9 (+",") erhalten, dann ist alles okund eine sql injection kann eigtl nicht mehr passieren
      nein.

      such, such!
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo.

        Ich habe dazu nichts passendes hier im Forum gefunden.
        Vielleicht habt ihr mich ja missverstanden/ich mich unklar ausgedrückt.

        Ich bin auf der suche nach einer Sicheren möglichkeit sql befehle zu verhindern vorm ausführen wenn Sie 'gefährliche' zeichen Ketten enthalten.

        Auf was müsste man den $sql string prüfen?
        ob ein ";" oder "union" ausserhalb von ' (") bzw un escaped vorkommt
        => verhindern das mehrere sql befehle ausgeführt werden

        , ob (sql) kommentare vorkommen, (ich glaube das wären "--" und "#") diese könnte man komplett verbieten (ich denke die zeichen werden ohnehin nicht so oft benuzt in 'regulären' querys)
        => verhindern von 'scherzen' wie
        ' or 1=1--
        " or 1=1--
        or 1=1--
        ' or 'a'='a
        " or "a"="a
        ') or ('a'='a

        nicht perfekt - aber ich denke der ansatz, das wunsch produkt sollte klar sein - ein schutz vor sql injections der nicht darauf beruht die einzelnen daten zu valiedieren (GPC) sondern als lezte instanz auftritt wenn dort etwas durchsickerte.

        Danke für jegliche Kommentare.

        Kommentar


        • #5
          einfach ein mysql_escape_string() nutzen ?
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            siehe tbt und php hat dafür sogar eine eigene Seite:

            http://de.php.net/manual/de/security...-injection.php
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              Hallo,

              danke für eure beiden Antworten, wenn Ihr mich auch falsch verstanden habt.

              Kommentar


              • #8
                Original geschrieben von bpieper
                Hallo,

                danke für eure beiden Antworten, wenn Ihr mich auch falsch verstanden habt.
                Nein, sie haben dich nicht falsch verstanden, sondern du hast die Doku nicht aufgesucht, um zu erfahren, z.B. was mysql_escape_string bzw. mysql_real_escape_string macht. Aber wie gesagt, das Thema wurde schon mehr als einmal ausführlich diskutiert und die wichtigsten Infos hast du auch schon, daher *closedmeinerseits*

                Kommentar

                Lädt...
                X